【问题标题】:Negation of regex expression正则表达式的否定
【发布时间】:2016-01-21 11:04:27
【问题描述】:

我想找到所有不符合给定格式的值

123-45-6789

123 45 6789

123-456789

12345-6789

12345 6789

123 456789

所以我编写了与上述格式匹配的正则表达式,所以我需要表达式的否定来解决我的问题

(\b\d{3}(\s?)\d{2}(\s?)\d{4}\b)|(\b\d{3}(|-)\d{2}(|-)\d{4}\b)

【问题讨论】:

  • 它是如何使用的?要匹配的有效格式是什么?添加代码
  • 我已经编辑了问题,希望这能解释问题
  • 尝试简单的正则表达式 ^\d{3}[ -]?\d{2}[ -]?\d{4}$/yourLongRegexHere/.test(myStr) === false 否定正则表达式结果
  • 我尝试在线测试您的正则表达式,但没有解决问题

标签: javascript regex regex-negation


【解决方案1】:

有一个否定的环视:(?! your_pattern )

在你的情况下是:

(?!(\b\d{3}(\s?)\d{2}(\s?)\d{4}\b)|(\b\d{3}(|-)\d{2}(|-)\d{4}\b))

更新:它在 JS 中不起作用,因为它减少了 Regex 语法支持。所以你不能使用某些类型的查找。那么你唯一的机会就是这样做

if (! your_regex.test(your_str) ) { /* work with unmatched strings */ }

【讨论】:

  • @diziaq:你可以清理正则表达式以显示更多的努力,因为你得到了 2 个赞成票。很明显,这里可以避免交替。而且我猜 OP 需要开始/结束字符串锚才能工作。
  • @stribizhev,完全同意你的看法。我试图将原始的正则表达式保留在里面以避免作者的困惑。我不清楚他要解决什么问题。哎呀...现在我看到作者在搞乱 JavaScript... 让我更新一下。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-13
  • 1970-01-01
  • 1970-01-01
  • 2021-10-02
相关资源
最近更新 更多