regex 检查表单中的数值或空字符串

qmelpv7a  于 2023-02-10  发布在  其他
关注(0)|答案(2)|浏览(152)

我用javascript来检查HTML表单中的数值和空字符串。如果输入了任何其他内容(符号、字母等),表单就不应该提交,并且会弹出一条错误消息。到目前为止,无论如何表单都会提交。我正在尝试设置它,以便如果3个字段中的任何一个字段有不正确的值,它都不会提交。例如:输入“5”然后输入“a”然后输入“5”(或类似输入的任何组合)不应起作用。而“5”然后输入“”然后输入“5”或““然后输入”“然后输入”“或“5”“5”“5”......等则应起作用。

Java脚本函数

function validateOrder()
                {
                    var myOrderRegex = /^(\s*|\d+)$/

                if(myOrderRegex.test(document.getElementById("appleorderquantity").value))
                {
                    return true;
                }
                else
                {
                    alert("Apple quantity invalid: must be numeric");
                    return false;
                }
                if(myOrderRegex.test(document.getElementById("grapeorderquantity").value))
                {
                    return true;
                }
                else
                {
                    alert("Apple quantity invalid: must be numeric");
                    return false;
                }
                if(myOrderRegex.test(document.getElementById("strbryorderquantity").value))
                {
                    return true;
                }
                else
                {
                    alert("Apple quantity invalid: must be numeric");
                    return false;
                }
            }

用于输入文本框的HTML

<input type="text" name="Apple_Quantity" id="appleorderquantity" size="25" />
<input type="text" name="Grape_Quantity" id="grapeorderquantity" size="25" />
<input type="text" name="Strawberry_Quantity" id="strbryorderquantity" size="25" />

用于提交按钮的HTML

<input type="submit" value="Submit" onClick="return validateOrder()" />
ecfsfe2w

ecfsfe2w1#

在函数结束之前不要返回true--检查任何不应该提交的条件,如果满足其中任何一个条件,则返回false,否则,在检查完所有条件之后,返回true。
而且你最好

<form onsubmit="return validateOrder()">
     ...
</form>

如果validateOrder()返回false,则表单不提交。

function validateOrder()
 {
     var myOrderRegex = /^(\s*|\d+)$/

      if(!myOrderRegex.test(document.getElementById("appleorderquantity").value))
            alert("Apple quantity invalid: must be numeric");
            return false;
       }
       if(!myOrderRegex.test(document.getElementById("grapeorderquantity").value))
          alert("Apple quantity invalid: must be numeric");
          return false;
       }
       if(!myOrderRegex.test(document.getElementById("strbryorderquantity").value))
           alert("Apple quantity invalid: must be numeric");
           return false;
       }

       return true;
    }
8e2ybdfx

8e2ybdfx2#

如果没有Regex,解决方案将是:

const isNumeric = (value) => {
  return !(
    Number.isNaN(Number.parseInt(value)) || // parseInt converts empty strings ('', '  ') to NaN
    Number.isNaN(Number(value)) // Number converts mixed numbers+strings ('123abc') to NaN
  );
}

console.log(isNumeric('123'));    //true
console.log(isNumeric(''));       //false
console.log(isNumeric(' '));      //false
console.log(isNumeric('123abc')); //false
console.log(isNumeric('+101'));   //true

相关问题