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

http://jsfiddle.net/czBhb/

此代码警告true,因为不使用精确的数学,但必须。

应该返回trueJohnjoHn大小写匹配关闭)。但不是John 12mahjohng

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

如何修复此正则表达式?

4

4 回答 4

3

如果您的目标是完全 匹配Johnor Steve,您希望在其中放置一个组:

alert(/^(?:John|Steve)$/i.text(name));

还要注意i不区分大小写。(半个多小时前,当 Beat Richartz 指出问题时,我确实在回答你的另一个问题时指出了这一点。)

于 2013-02-25T13:37:17.060 回答
2

关于什么

var name ='John Rock';
alert((/^(John|Steve)$/i).test(name));
于 2013-02-25T13:37:03.590 回答
2

试试这个:

alert(/^(?:John|Steve)$/i).test(name))

(?:组之间^$没有实际创建组

/i对于不区分大小写

于 2013-02-25T13:37:17.057 回答
1

重点在于^$分隔符。正如评论中已经指出的那样,它们似乎优先于 OR,因此您的正则表达式匹配以 开头John或以 结尾的任何内容Steve

将分隔符放在 OR 之外:

var name ='John Rock';
alert((/^(John|Steve)$/).test(name));
于 2013-02-25T13:40:46.820 回答