我的正确表达是:
-四位数
-在E或R或WE或WR上签名
-三位数
表达式的第二部分应如何显示?我正在尝试
^([0-9]{4})([E,R,WE,WR]{1})([0-9]{3})$
但是第二部分不起作用。
答案 0 :(得分:2)
使用替代字符而不是字符类:
^([0-9]{4})(E|R|WE|WR)([0-9]{3})$
您当前说的是与集合{ERW,}
中的任何一个字符匹配的内容。但是我们可以进一步简化您的模式:
^([0-9]{4})(W?(?:E|R))([0-9]{3})$
答案 1 :(得分:0)
[E,R,WE,WR]{1}
匹配1次出现的E
,R
,W or
,since
[...]是character class匹配括号内定义的集合/范围中的单个字符。
您要使用W
量词使?
为可选,然后匹配E
或R
。
您可以使用
^([0-9]{4})(W?[ER])([0-9]{3})$
^^^^^^^
请参见regex demo。
在这里,W?
匹配1或0次出现的W
,而[ER]
字符类匹配E
或R
。
请注意,模式中的交替组越少,模式的效率就越高。