我正在尝试使用正则表达式增加电子邮件/密码输入字段的安全性,但我的时间很糟糕,因为我无法找到我做错的事情。所以基本上我正在创建2个变量,我正在存储我的正则表达式模式,之后我想使用jquery来捕获提交按钮以及.on('click')如果用户添加了正确的信息以将其重定向到下一页例如。我一直在测试我的正则表达式,它们符合我的要求 - 在使用.test()测试后,它们对于电子邮件/密码都返回true。 这是我正在尝试构建的代码示例:
var userValidation = /^[\w-]+@[\w-]+\.[A-Za-z_-]{2,4}$/;
var passValidation = /((?=.*d)(?=.*[a-z])(?=.*[A-Z]).{8,15})/gm;
console.log(userValidation.test('test@gmail.com')); // testing
console.log(passValidation.test('12345678Kksad')); // testing
我正在尝试运行的实际代码
$('.button').on('click', function(){
if ($('#user') === userValidation && $('#pass') === passValidation){
window.location.replace("http://stackoverflow.com");
}else{
console.log('not working properly');
}
})
每当我在两个输入字段中输入电子邮件和密码时,如果根据我的正则表达式信息是否正确,则返回else语句无关紧要。
答案 0 :(得分:3)
您的代码中存在多个问题。
这是一个完整的例子。
CSS :
<form id="form" action="/validate" method="POST">
<input type="text" name="email"/>
<input type="password" name="password">
<button type="submit" >Submit</button>
</form>
JS :
var emailRegex = /^[\w-]+@[\w-]+\.[A-Za-z_-]{2,4}$/;
var passRegex = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[\da-zA-Z]{8,}$/;
$('#form').submit(function(event) {
event.prevendDefault();
// get email and password value
var email = $(this).find('input[name=email]').val();
var password = $(this).find('input[name=password]').val();
// validate email and password
if (emailRegex.test(email) && passRegex.test(password)){
window.location.replace("http://stackoverflow.com");
} else {
console.log('not working properly');
}
});
答案 1 :(得分:1)
或者,您可以对现有的事件处理函数进行微小更改,以使输入字段值与正则表达式匹配;
$('.button').on("click", function () {
if ($('#user').val().match(userValidation) && $('#pass').val().match(passValidation)) {
window.location.replace("http://stackoverflow.com");
} else {
console.log('not working properly');
}
});