我有这三个正则表达式。它们单独工作,但我想将它们合并为一个模式。
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/