Javascript 使用regex进行多输入验证

Javascript 使用regex进行多输入验证,javascript,html,regex,Javascript,Html,Regex,我有一个网络表单,用户必须在其中填写详细信息。我使用Javascript和html来对正则表达式进行多输入验证。下面是部分javascript+html代码。变量a-g是每个所需输入字段的正则表达式 我创建了一个名为Err_arr的空数组来存储满足条件的错误(例如,如果用户没有输入任何内容/如果用户没有满足所需的输入格式),错误消息将被推送到数组中。最后一个if语句将用于检查数组是否为空,因此它将根据条件在多行上打印所有错误消息 函数validateForm(){ var cname=docu

我有一个网络表单,用户必须在其中填写详细信息。我使用Javascript和html来对正则表达式进行多输入验证。下面是部分javascript+html代码。变量a-g是每个所需输入字段的正则表达式

我创建了一个名为Err_arr的空数组来存储满足条件的错误(例如,如果用户没有输入任何内容/如果用户没有满足所需的输入格式),错误消息将被推送到数组中。最后一个if语句将用于检查数组是否为空,因此它将根据条件在多行上打印所有错误消息

函数validateForm(){
var cname=document.getElementById(“cname”).value;
var odate=document.getElementById(“odate”).value;
var cno=document.getElementById(“cno”).value;
var ccn=document.getElementById(“ccn”).value;
var expm=document.getElementById(“expm”).value;
var expy=document.getElementById(“expy”).value;
var cvv=document.getElementById(“cvv”).value;
var Err_Arr=[];
变量a=/^(\w\w+)\s(\w+)$/;
变量b=/^(0?[1-9]|[12][0-9]|[3[01])[\/\-](0?[1-9]|[012])[\/\-]\d{4}$/;
var c=/[0-9]{8}/;
var d=/[0-9]{16}/;
var e=/0[0-1]1[0-9]){2}/;
var f=/[0-9]{4}/;
var g=/[0-9]{3}/;
如果(cname==null | | cname==“”){
错误推送(“请输入信息-客户名称”);
}
如果(odate==null | | odate==“”){
错误到达推送(“请输入信息-订单日期”);
}
如果(cno==null | | cno==“”){
错误推送(“请输入信息-联系号码”);
}
如果(ccn==null | | ccn==“”){
错误推送(“请输入信息-信用卡号”);
}
如果(expm==null | | expm==“”){
错误到达推送(“请输入信息-到期月份”);
}
如果(expy==null | | expy==“”){
错误到达推送(“请输入信息-到期年份”);
}
如果(cvv==null | | cvv==“”){
错误到达推送(“请输入信息-CVV编号”);
}
如果(名称测试(a)=错误){
错误到达按钮(“输入正确的输入”);
}
如果(odate.测试(b)=错误){
错误到达按钮(“输入正确的输入”);
}
如果(cno.测试(c)=错误){
错误到达按钮(“输入正确的输入”);
}
如果(共因测试(d)=错误){
错误到达按钮(“输入正确的输入”);
}
如果(扩展测试(e)=假){
错误到达按钮(“输入正确的输入”);
}
如果(实验测试(f)=假){
错误到达按钮(“输入正确的输入”);
}
如果(cvv试验(g)=假){
错误到达按钮(“输入正确的输入”);
}
如果(错误到达长度>0){
警报(错误到达加入(“\n”);
}
}
第3部分-带警报框的Javascript
客户名称:订单日期:联系电话:(如98765432)信用卡号码:(如123456789)到期日-月份部分(mm):到期日-年份部分(yyyy):CVV号码(如123):

代码的意图是正确的。警报未显示的原因:

  • var e
    中的语法错误。请注意缺少的一对括号。应该是
    /0[0-1]1([0-9]){2}/
  • .test()
    使用不正确。请参阅。基本上,
    test()
    是javascript中
    Regexp
    对象中的一个方法。所以它应该像
    regexObject.test(yourString)
修复所有这些最有可能使您的代码运行没有问题

函数validateForm(){
var cname=document.getElementById(“cname”).value;
var Err_Arr=[];
var a=新的RegExp(/^(\w\w+)\s(\w+$/);
如果(cname==null | | cname==“”){
错误推送(“请输入信息-客户名称”);
}
如果(!a.测试(cname)){
错误到达按钮(“输入正确的输入”);
}
如果(错误到达长度>0){
警报(错误到达加入(“\n”);
}
}
第3部分-带警报框的Javascript
客户名称:

您有一些错误:

  • e
    的正则表达式无效,因为它的括号不平衡
  • 字符串没有
    test
    方法;正则表达式
  • HTML中的信用卡号建议不会通过相应的正则表达式(需要16位数字)
还有一些较短的方法:

if (cname == null || cname == "")
可以是:

if (!cname)
更重要的是,您有很多代码重复。您可以通过循环操作来避免这种情况:

函数validateForm(){
var验证=[
{输入:“cname”,正则表达式:/^(\w\w+)\s(\w+)$/,名称:“客户名称”},
{输入:“odate”,正则表达式:/^(0?[1-9]|[12]\d |[3[01])[\/\-](0?[1-9]|[012])[\/\-]\d{4}$/,名称:“订单日期”},
{输入:“cno”,正则表达式:/^\d{8}$/,名称:“联系人编号”},
{输入:“ccn”,正则表达式:/^\d{16}$/,名称:“信用卡号”},
{输入:“expm”,regex://^0?[1-9]| 1[012]$/,名称:“到期月”},//更正regex
{输入:“expy”,regex://^\d{4}$/,名称:“到期年”},
{输入:“cvv”,正则表达式:/^\d{3}$/,名称:“cvv No”}
];
var errors=validations.map({input,regex,name})=>{
var value=document.getElementById(输入).value;
如果(!value)返回“请输入信息-”+名称;
如果(!regex.test(value))返回“输入正确的输入-”+名称;
}).过滤器(布尔值);
if(errors.length){
警报(错误。加入(“\n”);
返回false;
}
返回true;
}
第3部分-带警报框的Javascript
客户名称:
订单日期:
联系电话:(如98765432)
信用卡号:(如1234567890123456)
到期日-月份部分(mm):
到期日期-年份部分(yyyy):
CVV编号(如123):

@connexo我不希望输入使用“模式”属性。严格地说是javascript。为什么要重新设计已经存在的内容?@connexo-oh。这是我大学作业的要求。@alonelyc