正则表达式 - 允许在电话号码内的任何位置破折号

时间:2011-10-04 12:42:26

标签: regex

我有这个正则表达式:

^(1?)(-| ?)(\()?([0-9]{3})(\)|-| |\)-|\) )?([0-9]{3})(-| )?([0-9]{4}|[0-9]{4})$

我想在字符串中的任何地方允许破折号(“ - ”)。 最好的方法是什么?

来源: http://www.regxlib.com/REDetails.aspx?regexp_id=1497

3 个答案:

答案 0 :(得分:2)

我会说最好的是改变像

这样的部分
[0-9]{3}

(?:[0-9]-?){3}

这意味着有3个数字,每个数字后跟一个短划线。如果您想允许多个短划线,请将?更改为*

答案 1 :(得分:2)

您可以通过将[0-9]更改为[0-9-]

,将“ - ”视为数字

答案 2 :(得分:1)

不要打扰正则表达式。

  1. 删除所有不是数字或短划线的内容。
  2. 将剥离的字符串复制到temp var。
  3. 剥去破折号。
  4. 确保剩下10位数字。
  5. 如果是,请使用temp var作为您的值。