запуск теста регулярного выражения электронной почты - .test () не является функцией - PullRequest
0 голосов
/ 24 апреля 2019

Я проверяю правильность функции электронной почты и регулярно получаю смутное сообщение о том, что это не функция.

Это ответы, на которые я ссылался:

Простой скрипт проверки формы jQuery

проверка электронной почты с помощью регулярного выражения jquery

соответствие регулярного выражения javascript переменной домена электронной почты

Основная суть последних 2 ответов - запустить .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>

JS:

$(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 не является функцией в HTMLFormElement.(scripts.min.js: 1) в HTMLFormElement.dispatch (jquery.min.js: 2) в HTMLFormElement.y.handle (jquery.min.js: 2)

Почему я получаюэтот?Что я делаю неправильно, что связанные ответы делают правильно?

1 Ответ

2 голосов
/ 24 апреля 2019

Регулярное выражение должно быть таким /yourRegex/.test(value) без кавычек.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...