RegEx绝对数大于或等于120

时间:2017-06-27 14:32:45

标签: regex

我有一个字符串,其值范围从任何负数到任何正数。我只想匹配该数字的绝对值等于或大于120。

实施例。我有-843我需要知道这个数字是否大于120 防爆。我有1002我需要知道这个数字是否大于120 防爆。我有22,没有比赛。
防爆。我有-119,没有比赛。

我开始工作,但在3位数后卡住了。号码可以是任意数字。

.*([1-9][2-9]\d)$

https://regex101.com/r/SU6Znr/1

2 个答案:

答案 0 :(得分:4)

这是一个建议:

^(-?(?:1[2-9]\d|[2-9]\d\d|[1-9]\d{3,}))$

<强>解释

  • ^字符串的开头
  • -?以接受负值
  • 1[2-9]\d介于120和199之间的任何值
  • [2-9]\d\d介于200和999之间的任何值
  • [1-9]\d{3,}1
  • 开头的任何4位数字
  • $字符串结尾

Test it on regex101

答案 1 :(得分:-1)

你需要在你的正则表达式中使用2个案例:一个用于数字正好是三位数时,一个用于数字超过三位数时。您希望在正则表达式的开头删除.*,因为它匹配任何内容,包括非数字。

您可以使用:

^(-|)([1-9][2-9]\d|[1-9]\d{3,})$

正则表达式具有开始/结束锚点,以确保您检查整个字符串。第一个OR条件检查负号。假设没有前导零,[1-9][2-9]\d检查大于或等于120的3位数,[1-9]\d{3,}检查至少4位数的数字。

编辑:

我的正则表达式无法验证三位数字,例如200。最好的正则表达式是上面接受的那个:

^(-?(?:1[2-9]\d|[2-9]\d\d|[1-9]\d{3,}))$