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

时间:2018-02-05 01:02:08

标签: regex match regex-group

我很难改变目前的模式:

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

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

e.g。更改后 12345/\\9 无效:

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

2 个答案:

答案 0 :(得分:1)

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

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

 filename            user          lastaccessdate
/bin/a.csv           dory            2013-12-12
/bin/apps/b.csv      nina             2014-01-01

然后你只需要在前瞻断言^[0-9]*(?:[/\\][0-9]*){0,2}$ 中添加字符串长度的条件:

(?=...)

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

答案 1 :(得分:1)

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

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

访问this link尝试一个有效的演示。