日期时间格式正则如何实现字符不匹配则整体匹配失效?
解决方案
你要的全字符串匹配效果可以通过正则的首尾锚定符实现:
- 在正则开头加
^,限定匹配从字符串第一个字符开始 - 在正则结尾加
$,限定匹配到字符串最后一个字符结束
修改后的正则如下:
^(\b(d{1,2}|[-\/ :;]|M{1,2}|y{4}|h{1,2}|H{1,2}|m{1,2}|s{1,2}|t{1,2})\b){5,13}$
修改后再测试yyyy-M-ddx这类带多余字符的输入,整个字符串就会直接匹配失败,符合你的需求。
可选优化提示
你原正则里的\b单词边界规则可能在部分场景下出现误判(比如分隔符紧邻字符串首尾的情况),如果实际测试发现匹配不符合预期,可以酌情去掉单词边界限制,调整为:
^(d{1,2}|[-\/ :;]|M{1,2}|y{4}|h{1,2}|H{1,2}|m{1,2}|s{1,2}|t{1,2}){5,13}$
内容的提问来源于stack exchange,提问作者Nouwsh
相关产品推荐
相关产品推荐

