JavaScript Regex与完全字符串不匹配

时间:2012-08-22 19:11:42

标签: javascript regex match exact-match

在下面的示例中,输出为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);

2 个答案:

答案 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"基本相同}。