正则表达式允许在字符串的任何位置出现任何一个符号?

时间:2013-07-09 03:44:35

标签: regex regular-language

如果有人能提供帮助我会很感激..

我需要在字符串的任何位置(开头除外)允许出现短划线( - )。

我的RegEx是:

^[+]?[0-9]{3,10}$

我想允许以下可能性:

+7-777-77777
7-7-7-7-7-77

等。所以我可以在加号(+)和第一个数字之后冲到任何地方。

提前谢谢!

5 个答案:

答案 0 :(得分:2)

您可以使用前瞻

^(?=([^\d]*\d){3,10}[^\d]*$)[+]?\d+(-\d+)*$
 --------------------------
           |
           |->match further only if there are 3 to 10 digits in string

这将匹配字符串,其中包含3到10个数字,可选地在字符串

之间具有-

试试here


如果你想在字符串之间有可选空格

^(?=([^\d]*\d){3,10}[^\d]*$)[+]?\d+(\s*-\s*\d+)*$

答案 1 :(得分:0)

我认为您正在寻找的模式是:

^[+]?[0-9][0-9-]{2,9}$

这将匹配一个可选加号,后跟一个十进制数字,后跟2到9个十进制数字或连字符。

如果您还想确保字符串不能用连字符结束,只需使用:

^[+]?[0-9][0-9-]{1,8}[0-9]$

这将匹配一个可选的加号,后跟一个十进制数字,后跟1到8个十进制数字或连字符,后跟一个十进制数字。

请注意,您也可以将其扩展为所有Unicode数字(请参阅this answer for more information):

^\+?\d[\d-]{2,9}$

^\+?\d[\d-]{1,8}\d$

答案 2 :(得分:0)

http://rubular.com/r/8eyAolNHlX
在Ruby中应该可以工作:

  /\+?(?:\d\-?\d?)+/

答案 3 :(得分:0)

也许这个?

^[+]?\d(-?\d){2,9}$

答案 4 :(得分:0)

这需要输入开头和结尾带有前面可选加号的数字

^\+?\d[\d-]{,8}\d$