[英]Incorrect regex expression for Javascript
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
回文就像race car
一样,其前后拼写相同
我的正则表达式为'[^a-z0-9]/gi'
,它选择所有标点符号,逗号和空格,以便使用replace
原型字符串方法删除它们。 在测试正则表达式时,看起来不错,请参见下文
有人可以阐明我在这里做错了什么吗? 我的问题是我是console.log(str)
,它没有反映正确的输出。 例如
__eye
输入应该导致eye
输出,但不是
在此处repl以测试代码https://repl.it/JVCf/21
解决的编辑问题 :
其var re = /[^a-z0-9]/gi;
NOT var re = '/[^a-z0-9]/gi';
从MDN文档中 :
有两种创建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");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.