在下面的示例中,输出为true。它cookie
它也匹配cookie14214
我猜它是因为cookie在字符串cookie14214
中。如何磨练这场比赛只获得cookie
?
var patt1=new RegExp(/(biscuit|cookie)/i);
document.write(patt1.test("cookie14214"));
这是最好的解决方案吗?
var patt1=new RegExp(/(^biscuit$|^cookie$)/i);
答案 0 :(得分:5)
答案取决于您对单词cookie
周围字符的容差。如果单词要严格地出现在一行上,那么:
var patt1=new RegExp(/^(biscuit|cookie)$/i);
如果您想允许符号(空格,.
,,
等),而不是字母数字值,请尝试以下操作:
var patt1=new RegExp(/(?:^|[^\w])(biscuit|cookie)(?:[^\w]|$)/i);
第二个正则表达式,解释说:
(?: # non-matching group
^ # beginning-of-string
| [^\w] # OR, non-alphanumeric characters
)
(biscuit|cookie) # match desired text/words
(?: # non-matching group
[^\w] # non-alphanumeric characters
| $ # OR, end-of-string
)
答案 1 :(得分:2)
是,或使用字边界。请注意,这将匹配great cookies
但不匹配greatcookies
。
var patt1=new RegExp(/(\bbiscuit\b|\bcookie\b)/i);
如果你想匹配确切的字符串cookie
,那么你甚至不需要正则表达式,只需使用==
,因为/^cookie$/i.test(s)
与s.toLowerCase() == "cookie"
基本相同}。