我想创建一个正则表达式,只允许在标准文本框中允许超文和数字
提前致谢
答案 0 :(得分:4)
这是@El Yobo的正则表达式的缩短版本。您可以将[0-9]
替换为\d
,并且可以使用-?
选择连字符以删除连字符字符串的特殊情况。
^\d+(-?\d+)*$
答案 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-]*