javascript - 运行电子邮件正则表达式测试 - .test() 不是函数

标签 javascript jquery validation

我正在执行正则表达式检查有效的电子邮件函数,但收到一个模糊的错误,表明它不是函数。

这些是我引用的答案:

A simple jQuery form validation script

Validate email with a regex in jQuery

JavaScript regexp match against variable email domain

最后两个答案的基本要点是针对电子邮件输入运行 .test() 。因此,从我链接的第三个问题开始:

var userinput = 'dirk@something.com';
var domain = 'somethingelse.com';

var pattern = /^\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b$/i
if(!pattern.test(userinput) || userinput.split('@')[1] != domain)
{
  alert('not a valid e-mailadres, or the wrong domain!');
}​

我接受了这个看似基本的前提并遵循它。

我的代码如下所示:

HTML:

<form action="/premium/sign-up/" method="POST" id="signupform">

    <div class="field">
        <input class="signup-form-input" type="text" name="name" id="signupform-name" >
        <label class="signup-form-input-label" for="name">Name</label>
    </div>
    <div class="field">
        <input class="signup-form-input" type="text" name="email" id="signupform-email" >
        <label class="signup-form-input-label" for="email">E-Mail</label>
    </div>
    <div class="field">
        <input class="signup-form-input" type="password" name="password" id="signupform-password" >
        <label class="signup-form-input-label" for="Password">Password</label>
    </div>
    <div class="field">
        <input type="hidden" name="_csrftoken" value="<%= token %>">
        <input type="submit" name="submit" value="Next" class="signup-form-input" id="signup-next">
    </div>
    <div class="field field--lower-content">
        <input type="checkbox" name="update-opt" id="update-opt-checkbox">
        <label class="update-opt-label" for="update-opt">
            Sign up for updates from SparkNotes
        </label>
        <p>By signing up, you agree to SparkNotes’s <a href="/legal/">Terms of Service</a>
            , and <a href="/legal/privacy/">Privacy Policy</a> </p>
        <p>Already have an account? <a href="/premium/login/">Log in</a> </p>
    </div>
</form>

JavaScript:

$(function() {
    $("#signupform").submit(function(e) {
        var nameField = $("#signupform-name").val();
        var emailField = $("#signupform-email").val();
        var emailCheck = "^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$";
        var passwordField = $("#signupform-pasword").val();

        if (nameField === "") {
            e.preventDefault();
            $("#signupform-name").addClass("form-error");
        }
        if (!emailCheck.test(emailField)) {
            e.preventDefault();
            $("#signupform-email").addClass("form-error");
        }
        if (passwordField === "") {
            e.preventDefault();
            $("#signupform-name").addClass("form-error");
        }
    });
});

当我提交表单时,我得到:

Uncaught TypeError: "^w+([-+.']w+)@w+([-.]w+).w+([-.]w+)*$".test is not a function
at HTMLFormElement. (scripts.min.js:1)
at HTMLFormElement.dispatch (jquery.min.js:2)
at HTMLFormElement.y.handle (jquery.min.js:2)

为什么我会得到这个?我做错了什么而链接的答案却是正确的?

最佳答案

正则表达式必须类似于 /yourRegex/.test(value) (不带引号)。

关于javascript - 运行电子邮件正则表达式测试 - .test() 不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55833766/

相关文章:

javascript - 像普通提示一样阻止 sweetalert

javascript - jquery 用户界面 :window resizable

asp.net - ASP :ValidationSummary in div elemenet and styled

node.js - Express-Validator 中的验证

javascript - Node.js、MongoDB 和并发

javascript - 为什么间接更改复选框时不会触发复选框上的 onchange

jquery - 粘性页眉页脚,需要可滚动的内容(水平+垂直)

javascript - 仅在鼠标离开后显示元素一次

jQuery: .animate() 不再使用 scrollLeft

c# - 使用 XSD 架构验证 XML,而无需使用 C# 更改 XML