javascript js正则表达式不工作,完全匹配和或操作

q43xntqr  于 2023-02-02  发布在  Java
关注(0)|答案(4)|浏览(80)

前3个字符必须为:

  • 完全是ABC或ACD或BCD
  • 后面是连字符-
  • 然后是5或8
  • 然后任意4个数字

示例:

ABC-56789 (True)
AAA-56789 (False)

我试过这个:

/^[^ABC$|^ACD$|^BCD$][*-][5|8][0-9]{4}$/
k4emjkb1

k4emjkb11#

使用此正则表达式:

const regex = /^(?:ABC|ACD|BCD)-[58][0-9]{4}$/;
[
  'ABC-56789',
  'AAA-56789'
].forEach(str => {
  console.log(str, '==>', regex.test(str));
})

输出:

ABC-56789 ==> true
AAA-56789 ==> false

正则表达式的解释:

9gm1akwq

9gm1akwq2#

使用圆括号而不是方括号对交替模式进行分组:

^(ABC|ACD|BCD)-[58][0-9]{4}$
vfh0ocws

vfh0ocws3#

用这个表达怎么样?

^(ABC|ACD|BCD)-[5|8]\d{4}$

[]表示字符集。因此,[ABC]表示任何A或B或C,而不是ABC。^表示在[]中求反。因此,您使用的regex可能无法正常工作。如果您想对令牌分组,则应使用()。您还可以使用\d(数字)代替[0-9]。

i7uq4tfw

i7uq4tfw4#

您必须将正则表达式更改为以下内容:

/^(ABC|ACD|BCD)-(5|8)[0-9]{4}$/

[]匹配单个字符,但您希望在开头匹配三个字符,因此必须使用()创建捕获组。

相关问题