Javascript正则表达式失败

时间:2011-07-23 10:36:59

标签: javascript regex

我正在使用以下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

我做错了什么?

6 个答案:

答案 0 :(得分:2)

正则表达式区分大小写。因此Alyssa不匹配,因为Aa是不同的符号。 您可能希望使用不区分大小写的正则表达式匹配:

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

使RegExp不区分大小写:

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

请参阅documentation

答案 3 :(得分:1)

你的正则表达式区分大小写因此它不匹配Alyssa将此行添加到您的代码中:

pattern.ignoreCase = true;

答案 4 :(得分:1)

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

你做错的其他事情:

  • 打扰说“跟随零个或多个字符”,这只是多余的。
  • 使用正则表达式进行简单的子字符串检查即可完成工作。

我会这样做:

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

答案 5 :(得分:1)

没有错,你应该使用

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

只要您想要对测试用例不敏感或使用匹配项/^[aA].*/

,就匹配您的名称