【问题标题】:regex numbers outside of range正则表达式数字超出范围
【发布时间】:2017-04-18 16:43:38
【问题描述】:

我正在寻找特定范围之外的数字的正则表达式。

不接受的号码是v10,v11,v12,v13,v14,v15。我的正则表达式是v(1[0-5]) 但是 我想要这 6 个数字以外的任何数字。

v1 - accepted. Need regex for this
v5 - accepted. Need regex for this
v100 - accepted. Need regex for this
v51 - accepted. Need regex for this
v10...v15 - not accepted. I already have a regex for this.

【问题讨论】:

    标签: regex pcre


    【解决方案1】:

    使用锚点或边界使匹配更严格。

    \bv(1[0-5])\b
    

    ^v(1[0-5])$
    

    演示:https://regex101.com/r/TPkTom/1/

    锚点/边界需要完全匹配。如果没有这些,则表达式的唯一部分必须匹配。

    根据更新,负前瞻将起作用:

    v(?!1[0-5]\b)\d+
    

    演示:https://regex101.com/r/TPkTom/4/

    或者你可以使用 PCRE 动词:

    \bv1[0-5]\b(*SKIP)(*FAIL)|v\d+
    

    https://regex101.com/r/TPkTom/3/

    【讨论】:

    • 我实际上已经通过编辑问题进行了澄清。你能看一下吗
    • @yregex2017 哦,有点混合。答案已更新。
    • 你是个天才!非常感谢。
    • 如果这对您有用,请确保接受答案。如果不确定它是如何工作的,请参阅meta.stackexchange.com/questions/5234/…
    猜你喜欢
    • 1970-01-01
    • 2019-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多