Javascript正则表达式失败
我正在使用以下javascript正则表达式:Javascript正则表达式失败,javascript,regex,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应
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
我做错了什么?正则表达式区分大小写。所以
alysa
不匹配,因为A
和A
是不同的符号。
您可能希望使用不区分大小写的正则表达式匹配:
var pattern = new RegExp("^" + term + ".*", "i")
console.log(pattern.toSource());
console.log(first_name + " : " + pattern.test(first_name) );
您可以将正则表达式指定为不区分大小写,这样
a
将同时匹配a
和a
:
var pattern = new RegExp("^" + term + ".*", "i");
使您的
RegExp
不区分大小写:
var pattern = new RegExp("^" + term + ".*", "i");
请参阅。您的正则表达式区分大小写,因此不匹配。请在代码中添加此行:
pattern.ignoreCase = true;
它不起作用的原因是正则表达式区分大小写<代码>A不是
A
其他你做错的事情:
- 费心说“后面跟零个或多个字符”,这是多余的李>
- 当一个简单的子字符串检查可以完成任务时,使用正则表达式
console.log(
first_name + " : " +
(first_name.toLowerCase().indexOf(term.toLowerCase()) === 0)
);
没有问题,应该使用以下命令使RegExp不区分大小写
var pattern = new RegExp("^" + term + ".*","i")
要匹配您的名称,只要您希望使测试不区分大小写,或者使用类似于
/^[aA]./
的匹配项,a
与a
不同。。。不需要获得*
,顺便说一句。这样做:var模式=/^a/i代码>或var模式=/^[aA]/代码>错误的问题标题-regexp正在执行它被告知的操作。regexp比substring快,不是吗?另外,indexOf
如果在字符串中的任何位置找到字符串(与刚开始时相比),将返回true,不是吗?这似乎不太可能,尤其是如果必须动态构造正则表达式。我必须确定它的基准。而否,indexOf
从不返回true
或false
。如果它返回0
(这是我的示例检查的内容),那么它在索引0处找到了匹配项,索引0是第一个字符。