我如何编写250或更多的正则表达式?

时间:2014-01-23 01:10:56

标签: regex

现在已经坚持了一段时间。如何编写正则表达式以匹配250和所有大于250的数字? 我的意思是说我想要匹配所有价格为250英镑或以上的门票。

5 个答案:

答案 0 :(得分:3)

虽然使用Regexp进行数字比较没有意义,但这是一种方法:

首先,让我们看看大于250的所有数字的共同点是什么:

情况1:250< = x< = 299

  • 3位数
  • 2是第一个数字
  • 第二位数位于59
  • 之间
  • 第三位数位于09
  • 之间

与此匹配的正则表达式将是: /2[5-9][0-9]/

情况2:300< = x< = 999

  • 位数为3
  • 39
  • 之间的第一个数字
  • 09
  • 之间的所有其他数字

这个的正则表达式是: /[3-9][0-9]{2}/

案例3:x> = 1000

  • 4位或更多位数
  • 第一个数字为非零

这里的正则表达式是: /[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)与限制进行比较。