我正在执行正则表达式检查有效的电子邮件功能,但收到一个模糊的错误消息,它不是功能。
这些是我引用的答案:
A simple jQuery form validation script
validate email with regex jquery
javascript regexp match against variable email domain
最后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");
}
});
});
提交表格时,我得到以下信息:
未捕获的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)
我为什么要得到这个?链接的答案做对了,我在做什么错了?
答案 0 :(得分:2)
正则表达式必须像这样的/yourRegex/.test(value)
,不带引号。