使用连字符和数字的正则表达式

时间:2010-12-04 04:59:56

标签: regex language-agnostic

我想创建一个正则表达式,只允许在标准文本框中允许超文和数字

  1. Hypen不应该位于第一个和最后一个位置
  2. Hypen必须有两端的数字
  3. 文本框中可以有n个超大数字和数字
  4. 提前致谢

7 个答案:

答案 0 :(得分:4)

这是@El Yobo的正则表达式的缩短版本。您可以将[0-9]替换为\d,并且可以使用-?选择连字符以删除连字符字符串的特殊情况。

^\d+(-?\d+)*$

http://ideone.com/SRqPW

答案 1 :(得分:3)

这个正则表达式应该这样做:

^[0-9]+(-[0-9]+)*$

这将匹配一个或多个数字,后跟零个或多个连字符后跟一个或多个数字的序列。

答案 2 :(得分:2)

我假设空字符串有效。我不确定我理解你的第三条款;你是说n可以是任何东西,还是你必须限制n次出现?我也不确定连字符的每一端都需要多少位数;它是任何一个或更大,或恰好一个?

以下正则表达式允许使用1-9-129-2-293-23之类的字符串。

^(([0-9]+-[0-9]+)|[0-9]+)*$

因为每个子模式必须以数字开头和结尾,所以没有必要在子字符串外的每一端都有数字匹配,就像在此处发布的其他解决方案一样。

答案 3 :(得分:2)

这会有用吗?

(\d+\-)*\d+

编辑:将'+'更改为'*',因为连字符似乎没有必要。

Edit2:修正了正则表达式以防止出现双连字符。

答案 4 :(得分:2)

^((\d+-)+\d+)*$

它说:你必须从几个数字开始,然后是-。根据需要重复多次,然后必须以更多数字结束。最后*允许空字符串。

答案 5 :(得分:1)

我无法相信,我通过在正则表达式中猜测得到它,我希望这可以正常工作。

(\d+(\d*\\-\d+)+\d*)|\d+

答案 6 :(得分:-2)

您可以尝试使用此正则表达式:.[\w-]*