作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以这是我的问题:我正在使用连字符检查 2 年的输入。喜欢:
2001-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
不应该。
并且使用我发现的 bool 值的负数不是一个选项。我需要这个用于 huuuge 正则表达式,它应该匹配很多不同的日期格式。这只是其中的一部分。
有什么办法可以实现吗?
最佳答案
您可以使用否定前瞻来实现此目的:
^([0-9]{4})-(?!\1)[0-9]{4}$
这几乎是相同的模式,除了它使用反向引用插入条件检查。
如果 \1
在其位置匹配,(?!\1)
将失败。
关于Javascript 正则表达式 : is there anyway to write a regex which gives true if backreference is NOT matched,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27014833/
我是一名优秀的程序员,十分优秀!