我正在尝试编写一个匹配的正则表达式,如果它只包含[ - + ./()]和数字。非数字不得有两个连续的匹配。该字符串也必须包含7位数字。
即
((
无效。(
也无效(1234567)+
有效且()1+34564+0
也有效我写了以下正则表达式:
/^(([()/.+ -])\1?(?!\2)|\d)*$/
对我不起作用的部分是必填数字。我不知道如何完成正则表达式。正则表达式应该如何寻找上述规则?
答案 0 :(得分:2)
您可以使用前瞻来验证7位数的存在:
(?=\D*(\d\D*){7}$)
放置在正则表达式的开头,它将确保匹配的字符串包含正好7位数字。
作为一个整体正则表达式,我会使用^(?=\D*(\d\D*){7}$)(?:(?:([-()+./])(?!\2))|\d)*
。你可以尝试here。
答案 1 :(得分:2)
我认为这可以胜任:
^(?:(?:([-+./()])(?!\1))*\d){7}(?:([-+./()])(?!\2))*$