function palindrome(str) {
//Clean up string
var re = '/[^a-z0-9]/gi';
str=str.toLowerCase();
str=str.replace(re, '');
console.log(str);
//Reverse string and check
var pstr = str.split('').reverse().join('');
if (pstr === str){
return true;
}
return false;
}
palindrome("__Eye");
我试图测试回文陈述。我使用https://regex101.com/使用示例语句测试我的regEx语句
上面的函数是尝试检查字符串值是否是回文,如果是,则返回true,如果不是则返回false
Palindromes就像race car
那样拼写相同的向前和向后
我的正则表达式是'[^a-z0-9]/gi'
,它选择所有标点符号,逗号和空格,以便使用replace
原型字符串方法删除它们。在测试正则表达式时,它看起来很好,见下文
有人能说清楚我在做错了吗?我遇到的问题是我console.log(str)
并且它没有反映出正确的输出。 e.g。
__eye
输入应该导致eye
输出但不是
在此处重新测试代码https://repl.it/JVCf/21
解决编辑问题:
其var re = /[^a-z0-9]/gi;
NOT var re = '/[^a-z0-9]/gi';
答案 0 :(得分:1)
有两种方法可以创建一个RegExp对象:文字符号和构造函数。要指示字符串,文本表示法的参数不使用引号,而构造函数的参数使用引号。因此,以下表达式创建相同的正则表达式:
/ab+c/i;
new RegExp('ab+c', 'i');
new RegExp(/ab+c/, 'i');
不同的方法有不同的优点和缺点。
function palindrome(str) {
//Clean up string
var re = /[^a-z0-9]/g; // note RegEx pattern is not a string
str=str.toLowerCase();
str=str.replace(re, '');
console.log(str);
//Reverse string and check
var pstr = str.split('').reverse().join('');
if (pstr === str){
return true;
}
return false;
}
palindrome("__Eye");