javascript - 表单验证的完整性检查。当我的正则表达式应该这样做时不接受有效日期
问题描述
这里我有一个 Javascript 函数,当调用它时,它会在 ASP 表单中查找三个特定字段并检查每个字段是否正确填写。我的意图是在单独的 asp 提交按钮发送表单之前编写更多代码来处理数据,但我认为 asp 的东西与问题/问题无关。
function generateRef() {
var recieptno = document.getElementById("test_txt_Recno").value;
var dop = document.getElementById("test_txt_Date").value;
var branchno = document.getElementById("test_txt_Branchno").value;
if (typeof recieptno === undefined || recieptno =="" ) {
alert('Missing Reciept Number');
}
else {
if (typeof dop === undefined || dop =="" ) {
alert('Missing Date of Purchase');
}
else {
if (typeof branchno === undefined || branchno =="" ) {
alert('Missing Branch Number');
}
else {
// all is good, carry on.
// check for valid reciept no
var pattern = new RegExp("^[0-2]([0-9]{5})$");
if ( pattern.test(recieptno)) {
// check for valid branch no
var pattern2 = new RegExp("^([0-9]{4})$");
if ( pattern2.test(branchno)) {
// check for valid dop
var pattern3 = new RegExp("^\d{2}[\/]\d{2}[\/]\d{4}$");
alert(dop);
if ( pattern3.test(dop)) {
alert('OK');
// more code will go here for the next steps
}
else {
alert('Invalid Date of Purchase. The date must be in DD/MM/YYYY format.');
}
}
else {
alert('Invalid Branch Number');
}
}
else {
alert('Invalid Reciept Number');
}
}
}
}
}
注意:上面代码中当前的正则表达式只是一个糟糕的日期检查,它只是因为我有一个更好的,但想确保正则表达式不是一个简单的问题。
我尝试以例如 02/02/2020 的形式输入日期,并且警报吐出这个日期就好了,看起来应该可以工作,但是代码的逻辑仍然使它打印出警报,上面写着日期格式错误,无法在我想继续我的代码的地方出现“确定”警报。其他两项检查似乎正在工作,日期一项位于其中,并且它们在我看来格式相同。
在这一点上,我只需要一个健全性检查来发现我的错误。我不明白为什么它不起作用。
解决方案
如果使用带有字符串文字的 RegExp 构造函数,请记住反斜杠是字符串文字中的转义,因此要在正则表达式中使用它,您需要在字符串文字级别对其进行转义。
/a\*b/
并new RegExp("a\\*b")
创建相同的表达式,搜索“a”,后跟文字“*”,后跟“b”。
如果您想使用 RegExp 构造函数而不是/^\d{2}[\/]\d{2}[\/]\d{4}$/
,则需要转义反斜杠:new RegExp("^\\d{2}[\\/]\\d{2}[\\/]\\d{4}$")
推荐阅读
- mulesoft - 我正在尝试使用外部 API 并配置基本路径和查询参数
- amazon-web-services - 如何使 AWS Batch Volume 持久化?
- javascript - 如何将 STDOUT 重定向到 .json 以获取 NodeJS 中的日志
- php - (.htaccess) 在 php 中不起作用并在服务器上收到错误消息?
- algorithm - 计算合成平方根的高效算法
- javascript - 检查另一个对象数组中是否缺少一个对象数组的字段
- performance - Windows 在运行 react-native run-android 时挂起
- android - 如何从 Android 设备获取相机制造商/品牌和型号
- python - 熊猫插值 - 不要只是重复最后的值
- javascript - 如何从 JavaScript 中的字符串生成正数?