gpt4 book ai didi

javascript - Javascript 的正则表达式不正确

转载 作者:行者123 更新时间:2023-12-03 03:54:18 26 4
gpt4 key购买 nike

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/使用示例语句测试我的正则表达式语句

上面的函数尝试检查字符串值是否为回文,如果是则返回 true,如果不是则返回 false

回文就像赛车,其向前和向后拼写相同

我的正则表达式是'[^a-z0-9]/gi',它选择所有标点符号、逗号和空格,以便使用replace删除它们 原型(prototype)字符串方法。在测试正则表达式时,它看起来很好,见下文

enter image description here

问题:

有人可以阐明我在这里做错了什么吗?我遇到的问题是我是 console.log(str) 并且它没有反射(reflect)正确的输出。例如

__eye 输入应产生 eye 输出,但事实并非如此

repl 在这里测试代码 https://repl.it/JVCf/21

编辑问题已解决:

它的 var re =/[^a-z0-9]/gi; 不是 var re = '/[^a-z0-9]/gi';

最佳答案

正则表达式模式不是字符串

来自the MDN documentation :

There are 2 ways to create a RegExp object: a literal notation and a constructor. To indicate strings, the parameters to the literal notation do not use quotation marks while the parameters to the constructor function do use quotation marks. So the following expressions create the same regular expression:

/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");

关于javascript - Javascript 的正则表达式不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45024008/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com