2

如果有人可以提供帮助,我将不胜感激..

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

我的正则表达式是:

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

我想允许以下可能性:

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

等等,这样我就可以在加号(+)和第一个数字之后的任何地方使用破折号。

先感谢您!

4

5 回答 5

2

您可以使用前瞻

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

这将匹配具有 3 到 10 位数字的字符串,可选地-在字符串之间


在这里试试


如果您想要字符串之间的可选空格

^(?=([^\d]*\d){3,10}[^\d]*$)[+]?\d+(\s*-\s*\d+)*$
于 2013-07-09T03:46:44.900 回答
0

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

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

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

如果您还想确保字符串不以连字符结尾,只需使用以下命令:

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

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

请注意,您还可以将其扩展到所有 Unicode 数字(有关更多信息,请参阅此答案):

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

或者

^\+?\d[\d-]{1,8}\d$
于 2013-07-09T03:46:04.213 回答
0

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

  /\+?(?:\d\-?\d?)+/
于 2013-07-09T03:51:36.580 回答
0

也许这个?

^[+]?\d(-?\d){2,9}$
于 2013-07-09T03:52:23.240 回答
0

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

^\+?\d[\d-]{,8}\d$
于 2013-07-09T04:07:51.803 回答