繁体   English   中英

验证功能不起作用

[英]validation function doesn't work

我已经创建了一个Java脚本函数,它应该验证输入字符,该字符应包含10个字符并且可以包含字母数字字符,但是此函数不起作用,请帮帮我

 function ValidateNIC(id) { var letters = /^[0-9a-zA-Z ]+$/; while(id.value.length==10) if(id.value.match(letters)) { return true; } else { alert('NIC must have alphanumeric characters only or should contain 10 charaters'); id.focus(); return false; } } 

就您的代码而言,如果长度不是10,则什么也不会发生。 更好的方法可能是:

if ((id.value.length == 10) && id.value.match(letters)) {
    return true;
}
alert("NIC must ...");
id.focus();
return false;

您可以在Regex中放置所有验证条件,例如^[a-zA-Z0-9]{10}$ 请注意,正则表达式模式字符串中的附加{10}仅在长度恰好10时用于创建匹配项。

然后,您可以使用Regex Object test方法,该方法针对字符串测试regex模式,如果匹配成功,则返回true ,否则返回false。

使用正面和负面的测试用例,完整填写以下经修改的代码段。

 function ValidateNIC(id){ var aphaPattern10 = /^[a-zA-Z0-9]{10}$/g; var result = aphaPattern10.test(id.value); if(!result){ alert('NIC must have alphanumeric characters only or should contain 10 charaters'); //id.focus(); } return result; } var testObjPass = { value : "012345678a"} console.log(ValidateNIC(testObjPass)); var testObjFail = { value : "012345678a21312"} console.log(ValidateNIC(testObjFail)); 

以下代码检查以下NIC必须仅包含字母数字字符或包含10个字符。 因此,如果只有10个字符,则不会发出其他警报,它将测试正则表达式。 考虑到id是具有键值的对象

  function ValidateNIC(id)
  {
      var letters = /^[0-9a-zA-Z ]+$/;

    if(id.value.length!==10){
      if(id.value.match(letters))
      {
          return true;
      }
      else
      {
          alert('NIC must have alphanumeric characters only or should contain 10 charaters');
          id.focus();
          return false;
      }
      }
  }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM