我正在尝试构建一个正则表达式模式匹配器。
完整的字符串模式如下:
AB123456C12
Letter A
Letter B
six digits
one letter
two digits.
我尝试尽可能匹配,但只要初始AB存在,就允许部分输入。 RegEx引擎是Javascript。希望完全跨浏览器兼容。
我确实有一个有效的模式:
^AB([0-9]{6}[A-Z][0-9]{0,2}|[0-9]{0,6})$
但它仅在alternation operator的参数处于此位置时有效。否则说,
^AB([0-9]{0,6}|[0-9]{6}[A-Z][0-9]{0,2})$
无法正常工作 - 这让我相信解决方案可能无法在某些模糊的浏览器中运行。
那么,还有其他任何定义该模式的方法吗?
感谢。
为清晰起见编辑:以下是正则表达式必须匹配的输入:
AB
AB123
AB123456Z
以下输入将被拒绝:
B
B123456Z12
ABC
123456
答案 0 :(得分:1)
这可能会有所帮助
^AB[0-9]{6}[A-Z][0-9]{2}$
答案 1 :(得分:0)
我认为你正在寻找这个。
# ^AB(?:(?:[0-9]{6}(?:[A-Z][0-9]{0,2})?)|[0-9]{1,5})?$
^ # BOS
AB # AB
(?: # Optional cl-1
(?: # Required cl-2
[0-9]{6} # Required 6 digits
(?: # Optional cl-3
[A-Z] # Required A-Z letter
[0-9]{0,2} # Required 0-2 (0 means optional)
)? # End cl-3
) # End cl-2
| # or
[0-9]{1,5} # Required 1-5 digits
)? # End cl-1
$ # EOS