如何使用正则表达式匹配多个字符串?
How to match multiple strings using regular expression?
我有一堆字符串可以匹配 Bonfire: Palindrome in FreeCodeCamp
字符串是:
- 眼睛
- 赛车
- 不是回文
- 一个人,一个计划,一条运河。巴拿马
- 没有
- 差一点
- 我今年 0 岁,今年 0 岁。
- 1 眼换 1 眼。
- 0_0 (: /-\ :) 0-0
我的代码:
function palindrome(str) {
var newstr = str.replace(/[^\w_-]/g,"").toLowerCase();
var num = newstr.length;
for(var i=0;i<=Math.floor(num/2);i++)
{
if(newstr[i]!==newstr[num-i])
{
return newstr;
}
}
return true;
}
if 语句中可能有什么错误?字符串的 return 没问题。只是无法理解这些正则表达式?
我当前的正则表达式:
var newstr = str.replace(/[^\w_-]/g,"").toLowerCase();
匹配除最后一个以外的几乎所有字符串。我哪里错了?
最后一个不是回文;开头有 0_0,结尾有 0-0,不要删除这些字符。
作为迂腐的注释,严格来说,这不是一种常规语言。
数组或字符串中的索引 运行 从 0
到 length-1
。但是当您访问字符串末尾的元素时,您将从 num
而不是 num-1
。从末尾减去的时候需要额外减去一个1
。所以应该是:
if (newstr[i] != newstr[num-i-1]) {
return newstr;
}
因此,虽然答案很有用,但它们没有提供正确的正则表达式。向@Barmar 指出正确的方向。这是我的正则表达式。
var newstr = str.replace(/[\W_]/g,'').toLowerCase();
回文在 FCC 中的完整代码:
function palindrome(str) {
var newstr = str.replace(/[\W_]/g,'').toLowerCase();
var num = newstr.length;
for(var i=0;i<=Math.floor(num/2);i++)
{
if(newstr[i]!==newstr[num-1-i])
{
return false;
}
}
return true;
}
palindrome("0_0 (: /-\ :) 0-0");
我有一堆字符串可以匹配 Bonfire: Palindrome in FreeCodeCamp 字符串是:
- 眼睛
- 赛车
- 不是回文
- 一个人,一个计划,一条运河。巴拿马
- 没有
- 差一点
- 我今年 0 岁,今年 0 岁。
- 1 眼换 1 眼。
- 0_0 (: /-\ :) 0-0
我的代码:
function palindrome(str) {
var newstr = str.replace(/[^\w_-]/g,"").toLowerCase();
var num = newstr.length;
for(var i=0;i<=Math.floor(num/2);i++)
{
if(newstr[i]!==newstr[num-i])
{
return newstr;
}
}
return true;
}
if 语句中可能有什么错误?字符串的 return 没问题。只是无法理解这些正则表达式?
我当前的正则表达式:
var newstr = str.replace(/[^\w_-]/g,"").toLowerCase();
匹配除最后一个以外的几乎所有字符串。我哪里错了?
最后一个不是回文;开头有 0_0,结尾有 0-0,不要删除这些字符。
作为迂腐的注释,严格来说,这不是一种常规语言。
数组或字符串中的索引 运行 从 0
到 length-1
。但是当您访问字符串末尾的元素时,您将从 num
而不是 num-1
。从末尾减去的时候需要额外减去一个1
。所以应该是:
if (newstr[i] != newstr[num-i-1]) {
return newstr;
}
因此,虽然答案很有用,但它们没有提供正确的正则表达式。向@Barmar 指出正确的方向。这是我的正则表达式。
var newstr = str.replace(/[\W_]/g,'').toLowerCase();
回文在 FCC 中的完整代码:
function palindrome(str) {
var newstr = str.replace(/[\W_]/g,'').toLowerCase();
var num = newstr.length;
for(var i=0;i<=Math.floor(num/2);i++)
{
if(newstr[i]!==newstr[num-1-i])
{
return false;
}
}
return true;
}
palindrome("0_0 (: /-\ :) 0-0");