我正在使用以下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
我做错了什么?
答案 0 :(得分:2)
正则表达式区分大小写。因此Alyssa
不匹配,因为A
和a
是不同的符号。
您可能希望使用不区分大小写的正则表达式匹配:
var pattern = new RegExp("^" + term + ".*", "i")
console.log(pattern.toSource());
console.log(first_name + " : " + pattern.test(first_name) );
答案 1 :(得分:1)
您可以指定您的RegEx不区分大小写,以便a
匹配a
和A
:
var pattern = new RegExp("^" + term + ".*", "i");
答案 2 :(得分:1)
答案 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].*/