我使用regex来匹配一个以XY
开头的字符串,然后是9位数字,例如:
XY123456789
我使用这个正则表达式:
XY[0-9]{9}
很简单,但是现在我想在这些数字中允许一个可选的空格.
因此,正则表达式应匹配:
XY123456789
XY123 456789
XY1234567 89
我可以使用XY[0-9 ]{9,10}
,但是我只想允许最多一个空格,并且只有9位数,所以,正则表达式应该不匹配:
XY1234567891
XY123 456 78
因此XY([0-9] ?){9}
或XY[0-9] ?[0-9] ?[0-9] ?[0-9] ?[0-9] ?[0-9] ?[0-9] ?[0-9] ?[0-9]
也不起作用。
有什么想法吗?有没有办法指定字符类 * 内部 * 出现的次数,比如XY[[0-9]*[ ]?]{9}
?
(In我的具体情况是,如果有必要,我将使用Java regex。)
1条答案
按热度按时间drnojrws1#
你可以用
模式匹配:
^
字符串开始XY
逐字匹配(?!\d*\h\d*\h)
负前瞻,Assert非2个空格(?:\d(?:\h?\d){8})
匹配9位数字,可选择空格$
字符串结束Regex demo
在 java