在下面的示例中,输出为真。它是 cookie
,它也匹配 cookie14214
我猜这是因为 cookie 在字符串 cookie14214
中。我如何磨练这场比赛以只获得 cookie
?
var patt1=new RegExp(/(biscuit|cookie)/i);
document.write(patt1.test("cookie14214"));
这是最好的解决方案吗?
var patt1=new RegExp(/(^biscuit$|^cookie$)/i);
最佳答案
答案取决于您允许单词 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
)
关于JavaScript 正则表达式不匹配确切的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12079859/