Javascript 如何使用正则表达式匹配多个字符串?
我有一堆字符串要匹配篝火:FreeCodeCamp中的回文 字符串是:Javascript 如何使用正则表达式匹配多个字符串?,javascript,regex,palindrome,Javascript,Regex,Palindrome,我有一堆字符串要匹配篝火:FreeCodeCamp中的回文 字符串是: 眼睛 赛车 不是回文 一个人、一个计划、一条运河。巴拿马 没有 阿尔莫斯托拉 我的年龄是0,0岁 一只眼睛换一只眼睛 0_0(:/-\:)0-0 我的代码: function palindrome(str) { var newstr = str.replace(/[^\w_-]/g,"").toLowerCase(); var num = newstr.length; for(var i=0;i<=
- 眼睛
- 赛车
- 不是回文
- 一个人、一个计划、一条运河。巴拿马
- 没有
- 阿尔莫斯托拉
- 我的年龄是0,0岁
- 一只眼睛换一只眼睛
- 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;
}
几乎匹配所有字符串,但最后一个除外。我哪里出错了?最后一个不是回文;开头有0_0,结尾有0-0,不删除这些字符
作为一种迂腐的注释,严格来说,这不是一种常规语言。最后一种不是回文;开头有0_0,结尾有0-0,不删除这些字符
严格来说,这不是一种常规语言。数组或字符串中的索引从
0
到length-1
。但是,当您访问字符串末尾的元素时,您将从num
,而不是num-1
。从末尾减去时,需要再减去一个1
。因此,它应该是:
if (newstr[i] != newstr[num-i-1]) {
return newstr;
}
数组或字符串中的索引从
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");
函数回文(str){
var newstr=str.replace(/[\W_]/g',).toLowerCase();
var num=newstr.length;
对于(var i=0;i,虽然答案很有用,但它们没有提供正确的正则表达式。请向@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");
函数回文(str){
var newstr=str.replace(/[\W_]/g',).toLowerCase();
var num=newstr.length;
对于(var i=0;iunderscore包含在\w
中),您不需要在regexp中单独列出它。您在字符串之外进行访问。当i
为零时,您可以将其与newstr[num]
进行比较,但最高索引是newstr[num-1]
。下划线包含在\w
中,您不需要在regexp中单独列出。您在字符串外部进行访问。当i
为零时,您可以将其与newstr[num]
进行比较,但最高索引是newstr[num-1]
。