现在已经坚持了一段时间。如何编写正则表达式以匹配250和所有大于250的数字? 我的意思是说我想要匹配所有价格为250英镑或以上的门票。
答案 0 :(得分:3)
虽然使用Regexp进行数字比较没有意义,但这是一种方法:
首先,让我们看看大于250的所有数字的共同点是什么:
情况1:250< = x< = 299
2
是第一个数字5
和9
0
和9
与此匹配的正则表达式将是:
/2[5-9][0-9]/
情况2:300< = x< = 999
3
和9
0
和9
这个的正则表达式是:
/[3-9][0-9]{2}/
案例3:x> = 1000
这里的正则表达式是:
/[1-9][0-9]{3,}/
将这些与OR
条件相结合,您可以得到完整的正则表达式:
/£(2[5-9][0-9]|[3-9][0-9]{2}|[1-9][0-9]{3,})/
当然,更简单的方法是拔出数字,然后用编程语言比较$1
捕获组,如下所示:
/£(\d{1,})/
编辑:要包含小数,请附加\.[0-9]{0,2}
以允许与£999
,£999.5
和£999.99
匹配。
但是,请记住,如果您只想检查数字是否更大,则不需要这样做,因为原始RegExp也会在£999.99
等情况下返回true,即使它只是匹配整数部分。
答案 1 :(得分:1)
您可以使用正则表达式来识别文本中的数值,然后进行解析和比较以执行任何基于值的逻辑。
答案 2 :(得分:0)
这是一个Python风格的正则表达式,可能会按照您的意愿执行:
\d{4,}|[3456789]\d{2}|2[56789]\d
它匹配所有数字字符串长度为4个字符或更长,以及长度为3个大于2的字符,以及以2开头且具有第二个字符的长度为3个字符大于4.
这只会正确匹配正整数。
答案 3 :(得分:0)
为你的正则表达式引擎量身定做:
([1-9][0-9]{3,}|[3-9][0-9]{2}|2[5-9][0-9])
答案 4 :(得分:0)
尽管有可能,Regex的设计并不是为了轻松比较这里讨论的数字:Is there a simple regex to compare numbers to x?
可以使用正则表达式解析出这样的数字:
£(\d+)
然后您可以将找到的数字($ 1)与限制进行比较。