正则表达式 匹配1-300所有数字,并求讲解

正则表达式 匹配1-300所有数字,并求讲解
整数,没有小数

\b[1-9]\d{0,1}\b|\b[1-2]\d\d\b|\b300\b
正则表达式不能直接匹配数字范围,对它来说,数字字母中文都一视同仁,所以只能间接匹配。
\b[1-9]\d{0,1}\b匹配1-99,\b[1-2]\d\d\b匹配100-299,\b300\b匹配300,必须加\b,才不会匹配3300或3003。追问

特别感谢你的解答,我试过了,确实可行,这次的匹配有内容都是正整数,没有小数,我想额外请教一下,如果再次基础上,再排除小数,应该如何做?特别感谢

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-07-26
\b300\b|\b[12]?\d\d\b|\b[1-9]\b
所有的 \b都是为了避免匹配一个大的数字的其中一部分。
\b字符开头 +一些东西+\b 字符结束,
这里吧\b去掉讲吧:
300|[12]?\d\d|[1-9]

300 #百位是3,十位、个位只能是0
| #或者
[12]? #百位如果是1、2【也可以没有】
\d\d #个位、十位两个数字可以是任意值
| #或者
[1-9] #只有一位数字时,因不能是0,所以可以1~9

这里可能会匹配到
00
如果你数据里面没有单独两个0 的情况,就不用改表达式
第2个回答  2019-07-25
/^300$|^([1-2]\d\d|[1-9]\d|[1-9])$/
相似回答