电话号码的正则表达式

时间:2011-08-28 08:50:49

标签: regex

我需要这样的正则表达式来匹配这样的字符串

+68 0315 556 918

可能有人可能会帮忙

基本上我认为我只需要检查字符串是否包含+ space and digits

3 个答案:

答案 0 :(得分:1)

根据您的要求:如果您想检查一个字符串是否以加号开头并且之后只包含空格和数字,您可以使用例如。

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

注意:这也会匹配,例如"+ 9""+ ",请注意您的要求的具体细节。

  • 如果空格是可选的,您可以使用/^\+?[0-9 ]+$/
  • 如果您坚持使用至少一位数/^\+[0-9 ]*[0-9][0-9 ]*$/
  • 如果空间定界符最多可能使用/^\+([0-9]+ )*[0-9]+$/

答案 1 :(得分:1)

仅包含加号,空格和数字的字符串匹配:

^[+ \d]*$

根据您使用的语言/引擎,\d中的正则表达式可能无效。在这种情况下,您可以用0-9替换它。在某些情况下,某些语言可能还需要分隔符:

/^[+ 0-9]$/ will work.

答案 2 :(得分:0)

首先,我想恳请您阅读正则表达式。如果你喜欢从书本中学习,我会建议使用正则表达手册(很确定它有Jeff Atwood的批准印章)。无论如何,我会提供一个精确的(虽然不像其他答案一样的文字)解决方案。您必须为此启用空格模式(Perl中的x和许多其他模式):

/^\+[0-9]{2} \s+ # the first two digits
[0-9]{4} \s+ # the second set of digits
[0-9]{3} \s+ # the third set of digits
[0-9]{4}$/x # the final set of digits

如您所见,我建议在您的正则表达式中明确指出并确保您正好匹配 您要匹配的内容。简单地匹配包含加号,空格和数字的字符串可能会导致字符串非常不是电话号码!