带有可选符号的正则表达式

时间:2016-12-08 15:49:15

标签: regex

我需要验证电话号码。它可以是如此

Have + sign at start
+79231112233
Dont have + at start
79231112233
Have spaces
7 9231112233
7 923 1112233
7 923 111 22 33
Have dashes/spaces
7-923-111-22-33
7 923-111-22-33
7 923 111-22-33
Mixed
+7-923-111 22 33

是否可以使用正则表达式?

3 个答案:

答案 0 :(得分:2)

是。最简单,最惹人注意,但不完美,正则表达式将是这样的:

^\+?[0-9- ]+$

缺点是它会接受所有破折号或所有空格。

答案 1 :(得分:2)

除了在开始时匹配可选+并且在数字之间允许空格/连字符之外,电话号码必须具有最小数字#,例如10根据您给出的示例。

您可以考虑使用此正则表达式来满足上述条件:

\+?(?:\d[ -]?){10,}
  • (?:\d[ -]?){10,}强制执行10或数字,后面可选地后跟空格或连字符

答案 2 :(得分:1)

\+与文字+

匹配

\+?添加'?'使其成为可选项,在“' +'不会发生或发生一次

[ -]匹配单个字符,即空格或' - '。您可以在末尾添加一个问号,使其成为可选项(如上所述)。

\d匹配一位数(可写为[0-9])

\d{3}正好匹配三位数

这应该足以让您构建适合您目的的正则表达式。您应该了解有关正则表达式的更多信息,以便了解其缺点。