regex.test()函数没有给出正确的结果

时间:2015-11-27 16:48:54

标签: javascript html regex

我想我可以通过显示代码来解释我的疑问,而不是放弃它::

HTML:

<!DOCTYPE html>
<html lang='en-US'>
    <head>
        <title>Building Web Page for Client</title>
        <meta charset="UTF-8">
        <link rel="stylesheet" type="text/css" href="css.css">
    </head>
    <body>
        <form>
            <label for="message">Enter the banner Message: </label>
            <input type="text" name="userMessage" id="message" maxlength="32"><span></span><!--Form validation help text field--><br />
            <label for="zipcode">Enter the Zip Code: </label>
            <input type="text" name="userZip" id="zipcode" maxlength="5"><span></span><!--Form validation help text field--><br />
        </form>
        <script type="text/javascript" src="javascript.js"></script>
        <div id="testElement"></div>
    </body>
</html>

Javascript ::

//Code block for element declarers for special function checkers
var inputList = document.getElementsByTagName('input');
var zipField = document.getElementById('zipcode');
var regexForZip = /^\d{5}$/;
zipField.onblur = zipChecker;

function zipChecker(){
    if(checker1 && checker2){
        if(!(regexForZip.test(zipField)))
            inputList[1].nextElementSibling.textContent = 'You can only enter numbers';
        else
            inputList[1].nextElementSibling.textContent = '';
    }   
}

现在,HTML非常简单,而且javascript更简单。现在,你能看看checker1checker2布尔吗?这两个都是正确的(抱歉不包括在这段代码中,代码有点大)。

我定义了一个正则表达式,它只包含5位数字,没有别的。现在我做的是尝试取第二个输入元素,无论用户输入什么,我只检查5位数。根据代码,如果输入与正则表达式不匹配,则下一个<span>标记将有一个提示用户的文本,否则它将为空。

注意:对于这种情况,输入将是5个字符长。

现在问题在于:无论我作为输入提供什么,页面都会提示我只输入数字,这是没有意义的。假设,我输入11111.它告诉我,如果我输入任何其他字符而不是数字,它应该告诉我什么。

这个问题是什么?

1 个答案:

答案 0 :(得分:3)

您正在针对DOM RegExp

运行Element
if (!regexForZip.test(zipField))

您可能想要测试的是元素的,它是string

if (!regexForZip.test(zipField.value))