Javascript正则表达式:无论如何都要写一个正则表达式,如果不匹配反向引用则给出真值

时间:2014-11-19 10:43:42

标签: javascript regex

所以这是我的问题:我用连字符检查输入2年。像:

二零零一年至2015年

为了测试这个,我使用简单的正则表达式

/^([0-9]{4})-([0-9]{4})$/

我知道不需要小组,(19|20)[0-9]{2},与基本年份exp更接近,但请耐心等待。

现在,如果我的要求只是在相同的情况下匹配两年,我可以使用反向引用,如:

/^([0-9]{4})-\1$/

匹配2000-2000但不匹配2000-2014

我的实际要求恰恰相反。如果年份不同,我希望它匹配,但如果它们是相同的则不是。也就是说,2000-2014应匹配。 2000-2000不应该。{/ p>

使用我发现的布尔值的负数不是一个选项。我需要这个用于huuuge正则表达式,它应该匹配许多不同的日期格式。这只是其中的一部分。

有没有办法实现这个目标?

3 个答案:

答案 0 :(得分:2)

您可以使用否定前瞻:

\b(\d{4})-(?!\1)\d{4}\b

RegEx Demo

答案 1 :(得分:2)

您可以使用负向前瞻来实现此目的:

^([0-9]{4})-(?!\1)[0-9]{4}$

Demo

这几乎是相同的模式,除了它使用反向引用插入条件检查 如果(?!\1)在其位置匹配,\1将失败。

答案 2 :(得分:2)

使用否定前瞻。

像这样:

^([0-9]{4})-(?!\1)[0-9]{4}$

它确实适用于您的示例。

说明:(?!\ 1)断言无法匹配正则表达式 \ 1 。然后你只需要4个数字。