我正在尝试转换以下正则表达式:
^(?:\d{12}|\d{9}|(?i:YHZ)?\d{6}|(?i:YHZ)?\d{8})$
进入 javascript,但面临转义或处理“(?”的问题
我尝试在 https://regex101.com/#javascript
上进行验证,但无法处理它,任何人都可以分享上面的正则表达式中需要修复的内容,以便它可以在 javascript 中工作
最佳答案
JavaScript 不支持部分不区分大小写的模式。所以 (?:i
在 JS 中是无效的。
使用 i
标志使正则表达式区分大小写
/^(?:\d{12}|\d{9}|(YHZ)?\d{6}|(YHZ)?\d{8})$/i
<小时/>
来自评论:
it validates for following cases a. yhz+6numeric (not case sensitive for the yhz) b. yhz+8numeric (not case sensitive for the yhz) c. 6numeric d. 8numeric e. 9numeric f. 12numeric
正则表达式可以重写为
/^((yhz)?[0-9]{6}([0-9]{2})?|([0-9]{6})(([0-9]{2,3})|([0-9]{6}))?)$/i
在 Regex101 上测试此正则表达式
input:valid {
color: green;
}
input:invalid {
color: red;
}
<input type="text" pattern="((yhz|YHZ)?[0-9]{6}([0-9]{2})?|([0-9]{6})(([0-9]{2,3})|([0-9]{6}))?)" />
<br />
<br />it validates for following cases
<ul>
<li>yhz + 6numeric</li>
<li>yhz + 8numeric</li>
<li>6 numeric</li>
<li>8 numeric</li>
<li>9 numeric</li>
<li>12 numeric</li>
</ul>
如果您不需要任何捕获组,请在组的开头使用 (?:
。
/^(?:(?:yhz)?[0-9]{6}(?:[0-9]{2})?|(?:[0-9]{6})(?:(?:[0-9]{2,3})|(?:[0-9]{6}))?)$/i
关于javascript - 将 php 正则表达式转换为 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34630207/