如何正确编写正则表达式以匹配特定的起始数字?

时间:2013-11-25 12:56:20

标签: c# regex

我有一个我想扩展的正则表达式,以便它匹配特定输入的开头。

现在我的正则表达式匹配以下内容: 3位数 - 7位数 和 3digits7digits(一起)

我想通过添加以下内容来扩展它:

+46(空格)073-4567891(以+46开头,后跟空格,然后是3位数字后跟7位数字。

我的尝试:

^\d{3}-\d{7}$|^\d{10}$|^[+46]\s\d{3}-\d{7}$|^[+]\d{46}\s\d{10}$

我正在使用this site检查正则表达式是否正确,但我没有找到任何匹配项。

我在这里做错了什么?

如果有什么不清楚,请询问

3 个答案:

答案 0 :(得分:4)

以下正则表达式:(\+46)? ?(\d{3})(-| )?(\d{6,7}) 将此作为输入捕获:

  • 460764567891
  • +46 076 567891
  • +46 076567891
  • +46 076-567891
  • 0764567891
  • 076 4567891

答案 1 :(得分:1)

您的模式无法正常使用 [+ 46] ,这意味着从括号中选择 ANY 字符,因此要么修改模式,要么:

使用这个来捕获提到的字符串:

^\+46 \d{3}-\d{7}$

\+ - 首先获取“加号”字符,

46 - 然后46明确,因为他们(可能)永远不会改变你的情况,

- 捕捉空间的空间,

\d{3}-d{7} - 三位数后跟破折号和七位数。

答案 2 :(得分:1)

您的问题是[+46]匹配“一个+,4个或6个字符”,[+]\d{46}匹配“一个+字符,后跟46个数字” - 这两个都不是您想要的!< / p>

[+]46\+46替换这两者,两者都匹配“一个+字符后跟一个4个字符和一个6个字符”。 ([ ]\都只是转义+字符的替代方法。)