我正在研究一种允许字符“ x”和0到9之间任意数字的正则表达式。
以下是规则。
^(x|[0-9])(x|[0-9])(x|[0-9])(x|[0-9])$
我当前的正则表达式只能使用规则1和2,但是不能过滤掉多个带有'x'的规则。
x000 //ok
xxxx //ok , but should be not ok
23xx //ok , but should be not ok
a90d //not ok
11x1 //ok
x213 //ok
由于正则表达式将用于keyup的验证,因此,当用户键入一到四个keyup时,该规则必须引起关注。
更新的规则
答案 0 :(得分:3)
您可以使用
/^(?=[0-9x]{4}$)[0-9]*x[0-9]*$/
或
/^(?=[\dx]{4}$)\d*x\d*$/
详细信息
^
-字符串的开头(?=[\dx]{4}$)
-积极的前瞻性,检查从字符串的开始到结尾到底有4位数字或x
\d*
-0位数以上x
-一个x
\d*
-0位数以上$
-字符串的结尾。请参见regex demo
请注意,在这种情况下,您甚至可以将整个模式缩减为
/^(?=.{4}$)\d*x\d*$/
^^^^^^^^^
仅检查字符串的长度而不检查字符的类型(因为数字和x
是非换行符)。
答案 1 :(得分:2)
请提前查看“仅1 x”条件:
^(?=\d*x\d*$).{4}$
答案 2 :(得分:0)