我对正则表达式有点新,并且正在为正常表达式需要使用的数量字段编写验证。
如何匹配所有大于或等于50的数字?
我试过
[5-9][0-9]+
但只匹配50-99。有没有一种简单的方法来匹配所有可能超过49的数字? (仅使用整数)
答案 0 :(得分:75)
第一个数字必须在5-9
范围内的事实仅适用于两位数的情况。因此,在2位数的情况下检查,并允许更多数字直接:
^([5-9]\d|\d{3,})$
此正则表达式具有开始/结束锚点,以确保您检查所有数字,并且字符串实际上代表一个数字。 |
表示“或”,因此[5-9]\d
或任何包含3位或更多位数的数字。 \d
只是[0-9]
的快捷方式。
修改:禁止001
之类的数字:
^([5-9]\d|[1-9]\d{2,})$
在3位或更多位数的情况下,这会强制第一个数字不为零。
答案 1 :(得分:18)
我知道已经发布了一个很好的答案,但它不会允许前导零。而且我没有足够的声誉来发表评论,所以... 这是我的解决方案,允许前导零:
首先我匹配数字50到99(可能的前导零):
0*[5-9]\d
然后匹配100及以上的数字(也带前导零):
0*[1-9]\d{2,}
将它们与"或"一起添加并将其包起来以匹配整个句子:
^0*([1-9]\d{2,}|[5-9]\d)$
那就是它!
答案 2 :(得分:4)
尝试匹配50-99
的条件组或三位或更多位的任何字符串:
var r = /^(?:[5-9]\d|\d{3,})$/
答案 3 :(得分:3)
Next matches全部大于或等于11100
:
^([1-9][1-9][1-9]\d{2}\d*|[1-9][2-9]\d{3}\d*|[2-9]\d{4}\d*|\d{6}\d*)$
^([5-9]\d{1}\d*|\d{3}\d*)$
查看模式并修改为任意数字。 另外,为大数字找到一些递归的前向/后向运算符会很棒。
答案 4 :(得分:1)
试试这个正则表达式:
[5-9]\d+|\d{3,}
答案 5 :(得分:1)
我知道这很旧,但是这些表达式都不适合我(也许是因为我使用PHP)。以下表达式可以很好地验证数字是否大于49:
/([5-9][0-9])|([1-9]\d{3}\d*)/