我需要用regex验证字符串输入,规则是:
我真的需要通过正则表达式来完成这一点,所以任何其他解决方案都是不可接受的。
nue99wik1#
试试这个:
/^[2-9]|[1-9][0-9]{1,3}$/
实现您的第一个条件:
有两种情况:1.个位数:[2-9]这是一个范围在2到9之间的单个字符。1.多位数:[1-9][0-9]{1,3}这是一个2 - 3 - 4位数,所有数字都在1和9范围内。
[2-9]
[1-9][0-9]{1,3}
1
9
注1:{1,3}限制第二个字符类只能接受一位、两位或三位数字。注2:^表示字符串开始,$表示字符串结束。
{1,3}
^
$
顺便说一下,你的第二个条件根本没有在上面的模式中定义。* (我的意思是它不匹配任何与0星的数字,所以一切都很好。
0
aiqt4smr2#
试试这个
^(?!0|1$)\d{1,4}$
Regex demo
说明:
^\d{1,4}$:匹配0-9999(?!0)...:数字前不能有零(例如:编号0002、0022、0222)(?!1$)...:不小于2(==1)(?!…):负先行sample\d:从0到9的一位数sample^:字符串或行的开头,具体取决于多行模式$:字符串结束或行结束,具体取决于多行模式
^\d{1,4}$
(?!0)...
(?!1$)...
(?!…)
\d
2条答案
按热度按时间nue99wik1#
试试这个:
实现您的第一个条件:
有两种情况:
1.个位数:
[2-9]
这是一个范围在2到9之间的单个字符。1.多位数:
[1-9][0-9]{1,3}
这是一个2 - 3 - 4位数,所有数字都在1
和9
范围内。注1:
{1,3}
限制第二个字符类只能接受一位、两位或三位数字。注2:
^
表示字符串开始,$
表示字符串结束。顺便说一下,你的第二个条件根本没有在上面的模式中定义。* (我的意思是它不匹配任何与
0
星的数字,所以一切都很好。aiqt4smr2#
试试这个
Regex demo
说明:
^\d{1,4}$
:匹配0-9999(?!0)...
:数字前不能有零(例如:编号0002、0022、0222)(?!1$)...
:不小于2(==1)(?!…)
:负先行sample\d
:从0到9的一位数sample^
:字符串或行的开头,具体取决于多行模式$
:字符串结束或行结束,具体取决于多行模式