如何使正则表达式传递这些条件

时间:2012-10-18 16:53:51

标签: ruby regex

我想制作正则表达式来验证只有两个条件的电话号码的长度。首先应该是10个长度。

字符串的长度应为10位,可以是

之类的任何数字
          4345623467

如果字符串的长度为11,那么应该以1开始。

          14345623467

长度可以是10或11.其他长度不应该有效

感谢您的帮助。

3 个答案:

答案 0 :(得分:5)

更简单的一个:可选1后跟10位

/^1?\d{10}$/

答案 1 :(得分:1)

以下正则表达式匹配以" 1"开头的10或11位数的序列。或任何正好十位数的序列:

/^(?:1\d{9,10}|\d{10})$/

以下是它如何分解,以便您可以通过正则表达式变得更强大:

/^(?:1\d{9,10}|\d{10})$/
 │├─┘ ├──────┘ ├────┘ └ The end of the string.
 ││   │        └ Any digit repeated exactly ten times.
 ││   └ Any digit (0-9) repeated nine or ten times.
 │└ A non-matching group of two possible matches separated by a pipe (?:...|...)
 └ The start of the string.

答案 2 :(得分:0)

应该这样做:

/^(\d{10}|1\d{10})$/