jQuery正则表达式无法正常工作

时间:2015-11-29 14:58:56

标签: jquery regex testing

我正在尝试使用正则表达式增加电子邮件/密码输入字段的安全性,但我的时间很糟糕,因为我无法找到我做错的事情。所以基本上我正在创建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语句无关紧要。

2 个答案:

答案 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');
  }
});