字符串的正则表达式-长度9,第三个字符字母和其余数字

时间:2018-08-13 13:29:50

标签: javascript regex regex-group

我正在尝试创建一个RegEx来匹配符合以下条件的字符串

  • 长度7或9
  • 如果许多字符为7,则第一个字符必须为字母a-z或A-Z。其余6个字符必须为数字0-9。

示例:

readline()
  • 如果字符数为9,则第三个字符必须为字母a-z或A-Z,其余8个字符必须为数字0-9

示例:

line = myfile.readline().strip('\n')

我的正则表达式:

strip()

这是到目前为止,我只处理第一种情况。请帮助我构造一个正则表达式来处理此要求。

2 个答案:

答案 0 :(得分:2)

您可以使用另一种方式:

^([A-Za-z][0-9]{6}|[0-9]{2}[A-Za-z][0-9]{6})$

请参见regex demo

详细信息

  • ^-字符串的开头
  • (-分组构造的开始(您可以在?:之后添加(以使其不被捕获),它将与以下任一匹配:
    • [A-Za-z][0-9]{6}-ASCII字母,然后是6位数字
    • |-或
    • [0-9]{2}[A-Za-z][0-9]{6}-2位数字,1个字母,6位数字
  • )-分组构造的结尾
  • $-字符串的结尾。

答案 1 :(得分:0)

尝试这样的正则表达式:

^([0-9]{2})?[a-zA-Z][0-9]{6}$

?显示[0-9]{2}组是可选的。

因此,如果您有长度为7的字符串,则该组不存在。如果您有长度为9的字符串,则该组存在。