我有正则表达式女巫搜索日期(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](20)\d\d
。
问题是,它还返回匹配位于匹配10.10.10.2019
之类的另一个字符串中的匹配项,它将10.10.2019
作为日期匹配。在开始和结束时尝试\b
但没有运气。还使用了^
和$
,但仍然没有运气。
答案 0 :(得分:1)
您需要使用外观来仅匹配空格或字符串的开头/结尾:
(?<!\S)(?:0?[1-9]|[12][0-9]|3[01])([- /.])(?:0?[1-9]|1[012])\k<1>20\d\d(?!\S)
^^^^^^^ ^^^^^^
请参阅regex demo
我还建议通过使用([- /.])
捕获第一个分隔符,然后使用\k<1>
(明确的)反向引用来匹配相同的值来检查相同的分隔符。