var name ='John Rock';
alert((/^John|Steve$/i).test(name));
此代码提醒true
,因为不使用精确的东西,但必须使用。
应为true
和John
返回joHn
(案例匹配关闭)。但不适用于John 12
或mahjohng
。
代码中有|
,我们应该保留它。
如何修复此正则表达式?
答案 0 :(得分:3)
如果您的目标是完全匹配 John
或Steve
,那么您希望在其中放置一个群组:
alert(/^(?:John|Steve)$/i.text(name));
另请注意i
不区分大小写。 (一旦Beat Richartz指出问题,我在半个多小时前就在my answer to your other question指出了这一点。)
答案 1 :(得分:2)
怎么样?
var name ='John Rock';
alert((/^(John|Steve)$/i).test(name));
答案 2 :(得分:2)
试试这个:
alert(/^(?:John|Steve)$/i).test(name))
(?:
和^
之间的 $
个小组未实际创建小组
/i
答案 3 :(得分:1)
这一点在^
和$
分隔符中。正如评论中已经指出的那样,它们似乎优先于OR,因此您的正则表达式匹配以John
开头或以Steve
结尾的任何内容。
将分隔符放在OR之外:
var name ='John Rock';
alert((/^(John|Steve)$/).test(name));