0

我正在寻找一个正则表达式来匹配 9 个数字字符和可选的 1 或 2 个连字符。连字符的位置无关紧要。我能够让正则表达式有一个连字符:

^([0-9]{9}|(?=^[^-]+-[^-]+$)[0-9-]{10})$

如何修改它以包含另一个连字符?

4

2 回答 2

0

以下使用前瞻并确保它符合规则,即它由带有 0-2 个连字符的数字组成。

(?=^\d*-?\d*-?\d*$)^-*(\d-*){9}$
于 2013-09-26T16:45:53.893 回答
0

这应该这样做

^(?!([^-]*-){3,})(?=(\D*\d\D*){9}$)[\d-]+$
 ---------------  ----------------
         |              |->match only if there are 9 digits
         |
         |->don't match if there are 3 or more -
于 2013-09-26T16:42:35.493 回答