var name ='John Rock';
alert((/^John|Steve$/i).test(name));
此代码警告true
,因为不使用精确的数学,但必须。
应该返回true
和John
(joHn
大小写匹配关闭)。但不是John 12
或mahjohng
。
代码中有|
,我们应该保留它。
如何修复此正则表达式?
var name ='John Rock';
alert((/^John|Steve$/i).test(name));
此代码警告true
,因为不使用精确的数学,但必须。
应该返回true
和John
(joHn
大小写匹配关闭)。但不是John 12
或mahjohng
。
代码中有|
,我们应该保留它。
如何修复此正则表达式?
如果您的目标是完全 匹配John
or Steve
,您希望在其中放置一个组:
alert(/^(?:John|Steve)$/i.text(name));
还要注意i
不区分大小写。(半个多小时前,当 Beat Richartz 指出问题时,我确实在回答你的另一个问题时指出了这一点。)
关于什么
var name ='John Rock';
alert((/^(John|Steve)$/i).test(name));
试试这个:
alert(/^(?:John|Steve)$/i).test(name))
(?:
组之间^
和$
没有实际创建组
/i
对于不区分大小写
重点在于^
和$
分隔符。正如评论中已经指出的那样,它们似乎优先于 OR,因此您的正则表达式匹配以 开头John
或以 结尾的任何内容Steve
。
将分隔符放在 OR 之外:
var name ='John Rock';
alert((/^(John|Steve)$/).test(name));