假设我有一串长度为4的数字。
const example = "1234";
我需要验证以下模式是否全部有效:
1-2-3-4
1234
12-34
1-234
123-4
我将第一个和最后一个字符设置为数字。这样就为“-”字符留下了 3 个可能的位置。这就是我现在所拥有的:
\d{1}[-]? (\d[-]?){0,2} [-]?\d{1}
这似乎工作正常。然而,它最终也会匹配像
这样的字符串12
不遵守字符串长度为 4 个字符的规则。我如何强制这里的总字符长度?
最佳答案
您的模式将允许 12
因为这部分 (\d[-]?){0,2}
可以匹配 0、1 或 2 次,并且只有第一个和最后一个数字不是可选的。
您可以使用带有可选 -
的重复组
请注意,您可以省略 {1}
^\d(?:-?\d){3}$
^
字符串开头\d
匹配数字(?:-?\d){3}
重复 3 次,匹配可选的-
和数字$
字符串结尾
关于javascript - 如何强制执行正则表达式中的总字符数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58526888/