我正在寻找一个正则表达式来匹配9个数字字符和可选的1或2个连字符。 连字符的位置无关紧要。我能够让正则表达式有一个连字符:
^([0-9]{9}|(?=^[^-]+-[^-]+$)[0-9-]{10})$
如何修改它以包含另一个连字符?
答案 0 :(得分:0)
这应该这样做
^(?!([^-]*-){3,})(?=(\D*\d\D*){9}$)[\d-]+$
--------------- ----------------
| |->match only if there are 9 digits
|
|->don't match if there are 3 or more -
答案 1 :(得分:0)
以下使用前瞻并确保它符合使用0-2连字符的数字进行复合的规则。
(?=^\d*-?\d*-?\d*$)^-*(\d-*){9}$