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

标签 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 bool 值?这两个都是真的(很抱歉没有将它们包含在这段代码中,代码有点大)。

我定义了一个正则表达式,它只包含 5 位数字,没有其他内容。现在我所做的是尝试获取第二个输入元素,无论用户输入什么,我都会检查是否只有 5 位数字。通过代码,如果输入与正则表达式不匹配,则下一个<span>标签会有文字提示用户,否则为空。

注意:在这种情况下,输入的长度将为 5 个字符。

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

这有什么问题吗?

最佳答案

您正在针对 DOM Element 运行 RegExp

if (!regexForZip.test(zipField))

您可能想要测试的是元素的,它是一个字符串:

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

关于javascript - regex.test() 函数没有给出正确的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33961772/

相关文章:

Javascript Jest 期望 0 等于 -0

javascript - 查找字符串中最大的数字[jquery]

javascript - 如何在浏览器窗口中使用 vanilla JavaScript 模拟键盘按下?

正则表达式匹配后面没有一个字符的单个字符

python - 正则表达式lookbehind和lookahead未找到任何匹配项

javascript - Jquery 模板不适用于 'each'

javascript - 在 JavaScript 中编码 Base64,用 GET 发送,在 PHP 中解码

html - 如何在不影响其 sibling 位置的情况下绝对定位 flex 盒子中的 div?

javascript - 如何获取 DIV 元素的值,将它们放入数组中并在以后使用它们。 JS/查询

regex - 结构搜索 - IntelliJ 中的完整匹配表达式