Javascript 回文正则表达式
我已经在freecodecampus.com上完成了这个任务。有人能告诉我为什么它会给出错误的答案吗?如果我们删除了点和标点符号,那么它是否应该返回trueJavascript 回文正则表达式,javascript,regex,Javascript,Regex,我已经在freecodecampus.com上完成了这个任务。有人能告诉我为什么它会给出错误的答案吗?如果我们删除了点和标点符号,那么它是否应该返回true function palindrome(str) { // Good luck! var a = str.replace(/\s|[0-9_]|\W|[#$%^&*()]/g, "").toLowerCase(); if (a === a.split(""
function palindrome(str) {
// Good luck!
var a = str.replace(/\s|[0-9_]|\W|[#$%^&*()]/g, "").toLowerCase();
if (a === a.split("").reverse().join("")) {
return true;
}
return false;
}
palindrome("eye");
palindrome("1 eye for of 1 eye.") //should return false.
请参阅代码中的注释。replace
方法使用正则表达式将所有数字、特殊字符和空格全部替换为零。所以你得到的只是一个没有空格、数字和特殊字符的单词
在您的例子中,您将得到eyeforofeye
,这是一个完美的回文
请参阅代码中的注释。replace
方法使用正则表达式将所有数字、特殊字符和空格全部替换为零。所以你得到的只是一个没有空格、数字和特殊字符的单词
在您的情况下,您将得到
eyeforofeye
,这是一个完美的回文。您正在执行一个Rube-Goldberg过程,它提供了一个过于复杂的正则表达式,可以缩短为/[^a-z]/
,如果您执行代码,它不会返回false
函数回文组(str){
var a=str.replace(/[^a-z]/ig',).toLowerCase();
返回a===a.split(“”).reverse().join(“”);
}
log(回文(‘赛车’);
log(回文('2A3A2'));
log(回文('eye'));
log(回文('1眼对应1眼');
log(回文('stack')
您正在通过提供一个过于复杂的正则表达式来执行Rube-Goldberg过程,该正则表达式可以缩短为/[^a-z]/
,如果您执行代码,它不会返回false
函数回文组(str){
var a=str.replace(/[^a-z]/ig',).toLowerCase();
返回a===a.split(“”).reverse().join(“”);
}
log(回文(‘赛车’);
log(回文('2A3A2'));
log(回文('eye'));
log(回文('1眼对应1眼');
log(回文('stack')代码>根据您的评论“注意,您需要删除所有非字母数字字符(标点符号、空格和符号)”,您必须保留字母数字字符(即字母和数字)。因此,请删除非字母数字字符(即[\W\u]
)\W
是对\W
的否定:[^a-zA-Z0-9
这是通过以下方式完成的:
var测试=[
“赛车”,
“赛车”,
“赛车”,
“2A3*3a2”,
“2A3A2”,
“2_A3*3#A2”,
“一只眼睛换一只眼睛。”
];
函数回文组(str){
var a=str.replace(/[\W_3;]+/g,“”).toLowerCase();
如果(a==a.split(“”).reverse().join(“”){
返回true;
}
返回false;
}
console.log(test.map)(函数(a){
返回a+':'+回文(a);
}));代码>根据您的评论“注意,您需要删除所有非字母数字字符(标点符号、空格和符号)”,您必须保留字母数字字符(即字母和数字)。因此,请删除非字母数字字符(即[\W\u]
)\W
是对\W
的否定:[^a-zA-Z0-9
这是通过以下方式完成的:
var测试=[
“赛车”,
“赛车”,
“赛车”,
“2A3*3a2”,
“2A3A2”,
“2_A3*3#A2”,
“一只眼睛换一只眼睛。”
];
函数回文组(str){
var a=str.replace(/[\W_3;]+/g,“”).toLowerCase();
如果(a==a.split(“”).reverse().join(“”){
返回true;
}
返回false;
}
console.log(test.map)(函数(a){
返回a+':'+回文(a);
}));代码>感谢很多人,他们已经做到了;还得到了一些关于正则表达式的好信息。阅读雄辩的Javascript中的正则表达式,有人能推荐另一个更好的源代码吗?Thanx在前面
顺便说一句,答案是这样的,(对于那个些对通过项目中所有滴答声的答案感兴趣的人来说)
谢谢很多人,已经做到了;还得到了一些关于正则表达式的好信息。阅读雄辩的Javascript中的正则表达式,有人能推荐另一个更好的源代码吗?Thanx在前面
顺便说一句,答案是这样的,(对于那个些对通过项目中所有滴答声的答案感兴趣的人来说)
与其让我们进行推测,不如问问这项任务的作者?VTC不清楚。删除数字是任务的一部分吗?没错,伊利亚,这是全文;如果给定字符串是回文,则检查回文返回true。否则,返回false。回文是前后拼写相同的单词或句子,忽略标点符号、大小写和空格。注意:为了检查回文,您需要删除所有非字母数字字符(标点符号、空格和符号),并将所有字符都改为小写。我们将传递不同格式的字符串,例如“racecar”、“racecar”和“race CAR”等。我们还将传递带有特殊符号的字符串,如“2A3*3a2”、“2A3 3a2”和“2_A3*3#A2”。此正则表达式看起来过于复杂,无法满足以下要求:“需要删除所有非字母数字字符”。如果是/[^a-zA-Z0-9]+/g
,它字面上与非字母数字字符相匹配,那该怎么办?与其让我们进行推测,为什么不问问该任务的作者呢?VTC不清楚。删除数字是任务的一部分吗?没错,伊利亚,这是全文;如果给定字符串是回文,则检查回文返回true。否则,返回false。回文是前后拼写相同的单词或句子,忽略标点符号、大小写和空格。注意:为了检查回文,您需要删除所有非字母数字字符(标点符号、空格和符号),并将所有字符都改为小写。我们将传递不同格式的字符串,例如“racecar”、“racecar”和“race CAR”等。我们还将传递带有特殊符号的字符串,如“2A3*3a2”、“2A3 3a2”和“2_A3*3#A2”。此正则表达式看起来过于复杂,无法满足以下要求:“需要删除所有非字母数字字符”。那么/[^a-zA-Z0-9]+/g
呢,它实际上与非字母数字匹配
function palindrome(str) {
// Good luck!
var a = str.replace(/\s|[0-9_]|\W|[#$%^&*()]/g, "").toLowerCase();
// Here print a
// a = "eyeforofeye"; which is perfect palindrome
if (a === a.split("").reverse().join("")) {
// will pass this condition
return true;
}
return false;
}
palindrome("1 eye for of 1 eye.")
function palindrome(str) {
// Good luck!
var a = str.replace(/[^a-z0-9]/ig, "").toLowerCase();
if (a === a.split("").reverse().join("")) {
return true;
}
return false;
}
palindrome("eye");