这是我的以下正则表达式:
/^08(17|18|19|31|32|33|38|59|77|78)[0-9]{0,8}$/
如果我在输入字段中输入08将显示通知错误,我想要的是如果我输入0817将显示成功,如果我输入08我希望不出现通知错误。也许解决方案是在正则表达式中使用不捕获组。但是该怎么做呢?
这是我想要的前缀验证:
0817, 0818, 0819, 0831, 0832, 0833, 0838, 0859, 0877, 0878
您想对包含4位数字前缀和0至8位任意数字的代码实施实时输入验证。
关键是您不能使子模式连续可选,您需要使用嵌套的可选组,要求在左手数字之前出现左手数字。
模式变得很不整洁,但这是使其起作用的唯一方法:
^0(?:8(?:1(?:[789][0-9]{0,8})?|3(?:[1238][0-9]{0,8})?|5(?:9[0-9]{0,8})?|7(?:[78][0-9]{0,8})?)?)?$
详细资料:
^
-字符串开始0
-强制性的 0
(?:
8
-必须的 8
(?:
1
-必须1
紧接着...(?:
-符合以下条件的可选组:
[789]
- 7
,或8
,或9
后跟[0-9]{0,8}
- 0〜8的任何位)?
-(位于后面的可选组的末尾1
)|
- 或者3(?:[1238][0-9]{0,8})?
-(与上述类似)|
- 或者5(?:9[0-9]{0,8})?
-(与上述类似)|
- 或者7(?:[78][0-9]{0,8})?
-(与上述类似))?
-匹配和之后的所有可选组的末尾8
)?
-第一部分之后的整个部分0
是可选的。$
-字符串结尾。本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句