如何使用正则表达式获得1-100

时间:2011-06-19 06:26:08

标签: regex

我正试图得到类似的东西:

    Hello, 0 ( dont get )
    Hello2, 100 ( get )
    hello3, 82 ( get )
    hello< 132 ( dont get )

到目前为止,我已经做了类似的事情:

[a-zA-Z]{1,255},([0-9]{1,3})(?<![0])

但它无法获得132100。我该如何解决这个问题?

4 个答案:

答案 0 :(得分:16)

尝试使用与1或2位数字相匹配的正则表达式,或100:

\d{1,2}(?!\d)|100

答案 1 :(得分:4)

为什么不保持简单?

^[a-zA-Z]{1,255}, (100|[1-9][0-9]|[1-9])$

或更好

^[a-zA-Z]{1,255}, (100|[1-9][0-9]?)$

注意:这与前置的零不匹配,例如“你好,00001”。但它很容易扩展:

^[a-zA-Z]{1,255}, 0*(100|[1-9][0-9]?)$

答案 2 :(得分:1)

试试这个..它将匹配1到99或100.大于100的数字将无效。

(?:\b|-)([0-9]{1,2}|100)\b

小提琴链接.. https://regex101.com/r/mN1iT5/462

答案 3 :(得分:0)

您也可以结合使用正则表达式和算术条件进行检查:

1)字符串是数字:正则表达式匹配[0-9] +

AND

2)数字在1..100之间。

例如,在bash中:

N=100

[[ "$N" =~ ^([0-9]+)$ ]] && (( $N>0 && $N<=100 )) && echo YES || echo NO
# YES

[[ "$N" =~ ^([0-9]+)$ && "$N" -le "100" && "$N" -gt "0" ]] && echo YES || echo NO
# YES


N=0

[[ "$N" =~ ^([0-9]+)$ ]] && (( $N>0 && $N<=100 )) && echo YES || echo NO 
# NO

[[ "$N" =~ ^([0-9]+)$ && "$N" -le "100" && "$N" -gt "0" ]] && echo YES || echo NO
# NO