在我的 JSP 页面中,我有一个表,其中一列是以 HH:mm 格式显示的时间,数据类型为字符串(我在服务器中将其从日期转换为字符串)。现在我正在使用 Jquery 插件 Tabledit 应用内联表行编辑。
当我编辑列时,在发送到服务器之前,我会使用 RegExp 检查它。
var inTime = [];
var timeRegEx = new RegExp("^([0-9]|0[0-9]|1[0-9]|2[0-3]):([0-9]|0[0-9]|([1-5][0-9]))$");
inTime[1] = "14:34";
if (timeRegEx.test(inTime[1])) {
alert("Matched");
//return true;
} else {
alert("Not Mateched");
//return false;
}
我检查了一些onilne资源中RegExp的有效性,它是正确的。
但就我而言,在每个有效和无效输入中,它总是转到 else block 。
更重要的是,当我打印alert中inTime[1]的值时。它给出的输出如下:14%3A13
所以我还在正则表达式中将 : 替换为 %3A 但它也不起作用。
所以请告诉我哪里出了问题以及正确的解决方案是什么。
编辑:
此处:解释为 %3A,因此这可能会产生问题。
这里 inTime 是从表行获取值的数组。
最佳答案
var inTime = [];
var timeRegEx = new RegExp("^([0-9]|0[0-9]|1[0-9]|2[0-3]):([0-9]|0[0-9]|([1-5][0-9]))$");
inTime[1] = "14%A334";
if (decodeURIComponent(timeRegEx.test(inTime[1]))) {
console.log("Matched");
//return true;
} else {
console.log("Not Mateched");
//return false;
}
关于JavaScript RegExp 在每个有效和无效输入中返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45861130/