【问题标题】:Regex to limit specific characters within a group正则表达式限制组内的特定字符
【发布时间】:2018-07-14 20:07:02
【问题描述】:

我很难改变我目前的模式:

^[\\\/0-9]{5,10}$

检查输入是否包含 5-10 个数字、斜杠或反斜杠。 我想将斜杠和反斜杠的总数限制为最多两个。

例如12345/\\9 更改后应该无效:

我尝试像 ^([\\\/]{0,2}[0-9]){5,10}$ 那样将它们分解成一个单独的组,但我得到了错误的匹配。

【问题讨论】:

标签: regex match regex-group


【解决方案1】:

您可以使用锚定在字符串开头的前瞻来构建一个模式,该模式测试两个“全局条件”之一:字符串长度或斜杠数。

要限制斜线的数量,您可以这样设计模式:

^[0-9]*(?:[/\\][0-9]*){0,2}$

那么你只需要在前瞻断言(?=...)中添加字符串长度的条件:

^(?=.{5,10}$)[0-9]*(?:[/\\][0-9]*){0,2}$

(请注意,仅当模式由斜杠分隔时,您必须转义正斜杠。否则斜杠不是特殊字符。)

【讨论】:

    【解决方案2】:

    以下正则表达式应该可以完成这项工作:

    ^(?=[^\\\/]*(?:[\\\/][^\\\/]*){0,2}$)[\d\\\/]{5,10}$
    

    访问 this link 以尝试工作演示。

    【讨论】:

      猜你喜欢
      • 2016-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-21
      • 1970-01-01
      • 2014-03-04
      相关资源
      最近更新 更多