我有这三个正则表达式。它们单独工作,但我想将它们合并为一个模式。
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);
哪个是合并它们的正则表达式字符串?
以下应该匹配三个模式匹配的任何内容:
regex = [0-9]{4}[- ]?[0-9]{4}[- ]?[0-9]{4}[- ]?[0-9]{4}
也就是说,我假设您对数字之间的连字符、空格或什么都没有感到满意?
注意:这也将匹配您拥有三者任意组合的情况,例如
0000-0000 00000000
这可能不是我们想要的?
或者,如果您需要匹配三个单独的模式中的任何一个,则只需将它们与 连接|
,如下所示:
([0-9]{16})|([0-9]{4}-[0-9]{4}-[0-9]{4}-[0-9]{4})|([0-9]{4} [0-9]{4} [0-9]{4} [0-9]{4})
(您的原始示例似乎在空格和连字符周围有不必要的方括号)