我有一个字符串,其值范围从任何负数到任何正数。我只想匹配该数字的绝对值等于或大于120。
实施例。我有-843我需要知道这个数字是否大于120
防爆。我有1002我需要知道这个数字是否大于120
防爆。我有22,没有比赛。
防爆。我有-119,没有比赛。
我开始工作,但在3位数后卡住了。号码可以是任意数字。
.*([1-9][2-9]\d)$
答案 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
$
字符串结尾答案 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,}))$