使用正则表达式进行精确匹配

时间:2013-02-25 13:34:39

标签: javascript

var name ='John Rock';
alert((/^John|Steve$/i).test(name));

http://jsfiddle.net/czBhb/

此代码提醒true,因为不使用精确的东西,但必须使用。

应为trueJohn返回joHn(案例匹配关闭)。但不适用于John 12mahjohng

代码中有|,我们应该保留它。

如何修复此正则表达式?

4 个答案:

答案 0 :(得分:3)

如果您的目标是完全匹配 JohnSteve,那么您希望在其中放置一个群组:

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));