我正在尝试转换以下正则表达式:

^(?:\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


Regex 101 Demo



来自评论:


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>





javascript - 将php regex转换为javascript-LMLPHP

如果您不需要任何捕获组,请在组的开头使用(?:

/^(?:(?:yhz)?[0-9]{6}(?:[0-9]{2})?|(?:[0-9]{6})(?:(?:[0-9]{2,3})|(?:[0-9]{6}))?)$/i


Regex101 Demo

javascript - 将php regex转换为javascript-LMLPHP

10-07 13:46
查看更多