用于限制组内特定字符的正则表达式

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 试用工作演示。