JavaScript 正则表达式不匹配确切的字符串

标签 javascript regex match exact-match

在下面的示例中,输出为真。它是 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/

相关文章:

javascript - 如何仅针对特定规则或一组规则运行 eslint - 仅限命令行

javascript - 如何使用 Fabricjs 显示完整的 SVG?

regex - .htaccess 没有查询参数的重定向

excel - 最后 4 个结果的总和形成具有多个条件的列

Javascript 使用数组搜索字符串

javascript - 计算js对象中的值

javascript - polymer :用复杂的观察器观察阵列突变

javascript - 正则表达式中的通配符

regex - 使用 Powershell 和 Regex 从文本文件中提取行 block

javascript - RegExp 转换军事时间 JavaScript