Javascript正则表达式失败

Javascript regular expression is failing

本文关键字:失败 正则表达式 Javascript      更新时间:2023-09-26

我使用以下javascript正则表达式:

var pattern = new RegExp("^" + term + ".*")
console.log(pattern.toSource());
console.log(first_name + " : " + pattern.test(first_name) );

我想让它做的就是检查这个人的名字是否以给定的搜索词开头。例如,如果搜索词是"a",那么所有以a开头的名字都应该匹配,例如:andy, alice等。如果是al,那么只有alice应该匹配,以此类推。但是输出是:

/^a.*/
Alyssa : false

我做错了什么?

正则表达式是区分大小写的。所以Alyssa不匹配,因为Aa是不同的符号。您可能需要使用不区分大小写的regex match:

var pattern = new RegExp("^" + term + ".*", "i")
console.log(pattern.toSource());
console.log(first_name + " : " + pattern.test(first_name) );

没有问题,您应该使用

使RegExp不区分大小写。
var pattern = new RegExp("^" + term + ".*","i")

匹配你的名字,只要你想让测试用例不敏感,或者使用像/^[aA].*/

这样的匹配

您可以将RegEx指定为不区分大小写,以便a将匹配aA:

 var pattern = new RegExp("^" + term + ".*", "i");

设置RegExp大小写不敏感:

var pattern = new RegExp("^" + term + ".*", "i");

查看文档

你的正则表达式是大小写敏感的所以它不匹配Alyssa添加这一行到你的代码:

pattern.ignoreCase = true;

不工作的原因是正则表达式是区分大小写的。A不是a

你做错的其他事情:

  • 懒得说"后面跟着零个或多个字符",那只是多余的。
  • 当一个简单的子字符串检查可以完成工作时使用正则表达式。

我想这样做:

console.log(
    first_name + " : " + 
    (first_name.toLowerCase().indexOf(term.toLowerCase()) === 0)
);