字符串可以是一个数字或一组数字,也可以是两组数字,用“-"分隔,但所有字符的总数不能超过6个。
有效字符串的示例
5
55-33
4444-1
1-4444
666666
无效字符串示例
-3
6666-
5555-6666
我的正则表达式
/^\d+(-?\d+)?$/
但是这个正则表达式将5555-6666
解释为有效字符串,尽管它的长度超过6个字符。
我试着跟着
/^(\d+(-?\d+)?){1,6}$/
但是,然后我意识到它将封闭的字符集解释为一个组,它期望从1到6。
那么,如何控制字符的总数,只是一个正则表达式和上述要求?
3条答案
按热度按时间d6kp6zgx1#
你能做的最简单的事情就是在正则表达式之前测试长度(我更喜欢使用这种方法,它检查长度,然后使用正则表达式)
您可以使用正向前瞻
Regex Demo
yk9xbfzb2#
您可以使用正向前瞻模式来确保最多可以有6个字符:
演示:https://regex101.com/r/kAxuZp/1
或者,你可以使用一个负的lookahead模式来确保字符串不以破折号开头,另一个负的lookahead模式来确保字符串不包含两个破折号:
演示:https://regex101.com/r/kAxuZp/3
jv2fixgn3#
一种选择是使用当前的正则表达式模式,并检查输入的长度,同时删除破折号:
请注意,检查输入的长度只有在 * 删除了破折号 * 之后才真正有意义,因为只有这样我们才能Assert实际数字的总数。