Regex 如何使用正则表达式获取1-100
我想得到的是:Regex 如何使用正则表达式获取1-100,regex,Regex,我想得到的是: Hello, 0 ( dont get ) Hello2, 100 ( get ) hello3, 82 ( get ) hello< 132 ( dont get ) 你好,0(不明白) Hello2,100(得到) hello3,82(get) 你好0&&N0&&N0&&NH这是怎么工作的?我能读一点,但是?!\d?那到底是什么?[a-zA-Z]{1255},([1-9]{1,3}(?!\d!\100)对我来说很好,但仍然得到132等。
Hello, 0 ( dont get )
Hello2, 100 ( get )
hello3, 82 ( get )
hello< 132 ( dont get )
你好,0(不明白)
Hello2,100(得到)
hello3,82(get)
你好<132(不明白)
到目前为止,我已经制作了类似的东西:
[a-zA-Z]{1,255},([0-9]{1,3})(?<![0])
[a-zA-Z]{1255},([0-9]{1,3})(?)?
但它无法获取132
和100
。如何解决此问题?请尝试此正则表达式,该正则表达式匹配1或2位数字,或100:
\d{1,2}(?!\d)|100
为什么不保持简单呢
^[a-zA-Z]{1,255}, (100|[1-9][0-9]|[1-9])$
或者更好
^[a-zA-Z]{1,255}, (100|[1-9][0-9]?)$
注意:这与前面的零不匹配,例如“Hello,00001”。它可以很容易地扩展,但是:
^[a-zA-Z]{1,255}, 0*(100|[1-9][0-9]?)$
尝试此..它将匹配1到99或100。大于100的数字将无效
(?:\b|-)([0-9]{1,2}|100)\b
小提琴链接。。
您也可以通过组合正则表达式和算术条件来检查它:
1) 字符串是一个数字:正则表达式匹配[0-9]+
及
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
N=100
[[“$N”=~^([0-9]+)$]&&($N>0&&N0&&N0&&NH这是怎么工作的?我能读一点,但是?!\d?那到底是什么?[a-zA-Z]{1255},([1-9]{1,3}(?!\d!\100)
对我来说很好,但仍然得到132等。(?!)
是一个消极的前瞻性断言,因为(?是一个消极的前瞻性断言,(Adam Ramadhan):如果你得到的数字超过100,那是因为你没有把它集成到你自己的ReGEXP中,而且它也可以在一个数字中间匹配。@ Adam Ramadhan:不要使用<代码> [1-9] < /Cord>但是<代码> \d>代码>如果你想匹配80, 40, 10,如果你想确定没有前导0,请使用<代码>([1-9] \d{0,1}(?!)|100)
除了答案之外,当你问一个关于正则表达式的问题时,你应该指定你所说的正则表达式的类型。这里我假设它是类似Perl或ECMAScript的。