我正在尝试使用以下代码验证str
。我的最终目标是允许这种输入方式:
18.30 Saturday_lastMatch 3/10
但是,我的代码甚至无法用于基本用法(98.5%str
将采用此格式):
19.30(星期五)15/5
var regex= /[0-9]{2}[\.:][0-9]{2} [A-Z][a-z]{4,7} [0-9]\/[0-9]{2}/;
if(!str.match(regex)) {
//"Bad format, match creation failed!");
}
我错过了什么?
答案 0 :(得分:3)
需要扩展检查日/月的正则表达式的最后部分。它目前仅匹配#/##
,但也应允许##/#
。最简单的解决方法是允许任一侧的一个或两个数字(例如12/31)
var regex= /[0-9]{2}[\.:][0-9]{2} [A-Z][a-z]{4,7} [0-9]{1,2}\/[0-9]{1,2}/;
答案 1 :(得分:3)
你的正则表达式有很多问题。
日期&在开头和结尾的时间匹配部分不允许1 或 2位数字。
您可能需要考虑分别在^
和$
的开头和结尾处锚定正则表达式。
不需要转义字符类中的字面点。
试试这个:
var regex= /^[0-9]{1,2}[.:][0-9]{1,2} [A-Z][a-z]{5,8} [0-9]{1,2}\/[0-9]{1,2}$/;