javascript中的正则表达式

Regular expressions in javascript

本文关键字:正则表达式 javascript      更新时间:2023-09-26

嗨,我是javascript的新手,我有以下功能:

function checkform() {
    var theForm = document.getElementById('login_form');
    var regName = /^[a-zA-Z ]+$/;
    var firstname = theForm.firstname.value;
    if (
        (firstname == "" || theForm.firstname.value.length > 30 ) &&
        (regName.test(firstName) == false)
    ) {
        alert("That is not a valid first name!");
        theForm.firstname.focus();
        return false;
    }
}

它检查数据是否为空且不大于30。我的问题是,目前允许用户输入数据,不匹配我的正则表达式,即数值数据。我看不出这个逻辑有什么问题。

谢谢

在条件语句中尝试这样做:

if ((firstname == "" || theForm.firstname.value.length > 30 ) || (regName.test(firstname) == false)) {
    // ...
}

我已经改变了"&&"(and)运算符到"||" (or),因为您不需要检查两个条件(空或大于30且不匹配regexp),而只需检查它们中的任何一个(空或大于30或不匹配regexp)。

试试

 var regName = /^[a-zA-Z ]{3,30}$/;
 if (!regName.test(firstName)){ //make an error
<input id="txtChar" onkeypress="return isNumberKey(event)" 
       type="text" name="txtChar">
   function isNumberKey(evt)
   {
      var charCode = (evt.which) ? evt.which : event.keyCode;
      if (charCode != 46 && charCode > 31 && (charCode < 48 || charCode > 57) || event.value > 30)
         return false;
      return true;
   }