用于限制组内特定字符的正则表达式
Regex to limit specific characters within a group
我努力改变我目前的模式:
^[\\/0-9]{5,10}$
检查输入是否包含 5-10 个数字、斜杠或反斜杠。
我想将斜杠和反斜杠的总数限制为最多两个。
例如12345/\9
更改后应该无效:
我试着像这样将它们分解成一个单独的组 ^([\\/]{0,2}[0-9]){5,10}$
但是我得到了错误的匹配。
您可以使用锚定在字符串开头的前瞻来构建一个模式,该模式测试两个 "global conditions" 之一:字符串长度或斜杠数。
要限制斜杠的数量,您可以这样设计您的模式:
^[0-9]*(?:[/\][0-9]*){0,2}$
那么你只需要在前瞻断言中添加字符串长度的条件(?=...)
:
^(?=.{5,10}$)[0-9]*(?:[/\][0-9]*){0,2}$
(请注意,仅当模式由斜杠分隔时才需要转义正斜杠。否则斜杠不是特殊字符。)
下面的正则表达式应该可以完成这项工作:
^(?=[^\\/]*(?:[\\/][^\\/]*){0,2}$)[\d\\/]{5,10}$
访问 this link 试用工作演示。
我努力改变我目前的模式:
^[\\/0-9]{5,10}$
检查输入是否包含 5-10 个数字、斜杠或反斜杠。 我想将斜杠和反斜杠的总数限制为最多两个。
例如12345/\9
更改后应该无效:
我试着像这样将它们分解成一个单独的组 ^([\\/]{0,2}[0-9]){5,10}$
但是我得到了错误的匹配。
您可以使用锚定在字符串开头的前瞻来构建一个模式,该模式测试两个 "global conditions" 之一:字符串长度或斜杠数。
要限制斜杠的数量,您可以这样设计您的模式:
^[0-9]*(?:[/\][0-9]*){0,2}$
那么你只需要在前瞻断言中添加字符串长度的条件(?=...)
:
^(?=.{5,10}$)[0-9]*(?:[/\][0-9]*){0,2}$
(请注意,仅当模式由斜杠分隔时才需要转义正斜杠。否则斜杠不是特殊字符。)
下面的正则表达式应该可以完成这项工作:
^(?=[^\\/]*(?:[\\/][^\\/]*){0,2}$)[\d\\/]{5,10}$
访问 this link 试用工作演示。