正则表达式里有一个\num 字符匹配,它的含义是 向后引用(back-reference)一个子字符串(substring),该子字符串与正则表达式的第num个用括号围起来的子表达式(subexpression)匹配。其中num是从1开始的正整数,其上限可能是99。 例如一在个简单的日期匹配的正则表达式—— SELECT * FROM dual WHERE regexp_like('2014-04-05','^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$'); 中,\2的含义是与第2个子表达式相同的匹配(即是说年与月、月与日之间的连接符要么全为/,要么全为-)。 现在我在弄一个加强版的日期匹配正则表达式(加入闰年的识别),如下: SELECT * FROM dual WHERE regexp_like('2000-02-29', '^((19[0-9]{2}|[2-9][0-9]{3})(-|\/)(((0[13578]|1[02])\3(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)\3(0[1-9]|[12][0-9]|30))|(02\3(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))(-|\/)02(\num)29)$'); 问题是,请注意末尾\num,我应该填什么值,使之能匹配上“闰年-02-29或者闰年/02/29”呢?谢谢