我有这三个正则表达式。它们单独工作,但我想将它们合并为一个模式。

regex1 = [0-9]{16}
regex2 = [0-9]{4}[-][0-9]{4}[-][0-9]{4}[-][0-9]{4}
regex3 = [0-9]{4}[ ][0-9]{4}[ ][0-9]{4}[ ][0-9]{4}


我使用这种方法:

Pattern.compile(regex);


哪个正则表达式字符串可以合并它们?

最佳答案

您可以使用backreferences

[0-9]{4}([ -]|)([0-9]{4}\1){2}[0-9]{4}


仅当分隔符为全部时才匹配


空格
连字号
空白


\1的意思是“这完全匹配第一个capturing group –括号中的表达式–匹配的内容”。

由于([ -]|)是该组,因此要使模式匹配,其他两个分隔符都必须相同。

您可以simplify it further执行以下操作:

\d{4}([ -]|)(\d{4}\1){2}\d{4}

关于java - 正则表达式Java合并模式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13210463/

10-10 18:39
查看更多