如何结合3个正则表达式?

时间:2011-05-06 11:08:02

标签: regex

M/D/YY    /^(\d{1,2})\/(\d{1,2})\/(\d{2})$/           
M-D-YY    /^(\d{1,2})\-(\d{1,2})\-(\d{2})$/
M.D.YY    /^(\d{1,2})\.(\d{1,2})\.(\d{2})$/

3 个答案:

答案 0 :(得分:3)

/^(\d{1,2})([\/.-])(\d{1,2})\2(\d{2})$/

注意,现在有一个新的捕获组,所以年份将是反向引用数字4而不是之前的3。

如果您还想允许M/D-YY等,则可以使用

/^(\d{1,2})[\/.-](\d{1,2})[\/.-](\d{2})$/

答案 1 :(得分:2)

最简单的方法是写:

(r1)|(r2)|(r3)

其中ri是您拥有的正则表达式。当然,你可以将公共部分分解为锚点,所以

^(?:(r1)|(r2)|(r3))$

实际上,在您的情况下,正则表达式仅在使用的分隔符中有所不同,因此您可以将它们放在字符类中以获得通用的正则表达式。

答案 2 :(得分:1)

您需要捕获第一个分隔符并执行反向引用:

/^(\d{1,2})([\/-\.])(\d{1,2})\2(\d{2})$/