正则表达式验证xx-xxxxxxx或xxx-xx-xxxx

时间:2014-09-26 16:59:12

标签: regex

我正在尝试构建一个只接受以下格式的值的正则表达式验证器: -

string1 = xxx-xx-xxxx

string1 = xx-xxxxxxx

如何让正则表达式接受同一元素的两种值?

x仅表示数字。

所以总的位数= 9(0-9之间的任何东西)

值中的元素总数为11或10 ......具体取决于格式。

和破折号总数为2或1.

如何将其写入正则表达式?任何人都可以指出我正确的方向: - 文章/网站。

我对正则表达式有一些了解,我可以在这里验证电话号码和日期等。所以一点点帮助将会有很长的路要走。谢谢。

3 个答案:

答案 0 :(得分:2)

^\d{3}-\d{2}-\d{4}$|^\d{2}-\d{7}$

试试这个。看看演示。

http://regex101.com/r/iB9oZ1/1

答案 1 :(得分:1)

你可以试试下面的正则表达式,

^(?:\d{3}-\d{2}-|\d{2}-\d{3})\d{4}$

DEMO

<强>解释

^                        the beginning of the string
(?:                      group, but do not capture:
  \d{3}                    digits (0-9) (3 times)
  -                        '-'
  \d{2}                    digits (0-9) (2 times)
  -                        '-'
 |                        OR
  \d{2}                    digits (0-9) (2 times)
  -                        '-'
  \d{3}                    digits (0-9) (3 times)
)                        end of grouping
\d{4}                    digits (0-9) (4 times)
$                        before an optional \n, and the end of the
                         string

答案 2 :(得分:-1)

\d{2}(?:-\d{3}|\d-\d{2}-)\d{4}应该适用于元素。

 \d{2} 
 (?:
      - \d{3} 
   |  
      \d - \d{2} -
 )
 \d{4}