javascript - 将 php 正则表达式转换为 javascript

标签 javascript regex validation

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

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

Regex Visual

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

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

Regex101 Demo

Regex Visualization

关于javascript - 将 php 正则表达式转换为 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34630207/

相关文章:

javascript - 如何使用 javascript 和中键单击在新选项卡中打开网页

regex - 使用 grep 分割字符串的 shell 脚本

java - 匹配器。 appendReplacement 未添加起始内容

regex - 匹配模式后打印特定的行数

jQuery 验证器不等于多个值

在浏览器上使用 Javascript 访问拼写检查器

javascript - fabric.js 获取 IText 对象的 "edit"状态

javascript - 当我单击另一个文件时,如何更改 ace 编辑器内的内容?

javascript - stripe checkout 不验证必填字段

c# - 带有javascript确认功能的必填字段验证器未验证