带有If语句的jQuery Regex代码用于密码

时间:2013-01-21 21:02:04

标签: jquery regex passwords

我正在尝试创建一个if语句来测试jQuery(或Javascript)中的字符串。以下是条件:

  1. 必须介于6-8个字符之间。
  2. 第一个字符不能是数字。
  3. 必须包含1个数字,1个小写字母和1个大写字母。
  4. 这是我的正则表达式代码:

    ((?=^[^0-9])(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,8})
    

    我在一个测试正则表达式代码的网站上测试过,它运行正常。

    这是我目前的if语句:

    if(((?=^[^0-9])(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,8}).test(strOldPassword))
    {
        alert("Something");
    }
    

    我的网页加载时出现语法错误,但说正则表达式存在问题。

    有人可以帮我找到我做错的事吗?感谢。

3 个答案:

答案 0 :(得分:3)

有两种方法可以在JavaScript中定义正则表达式。

  1. 使用/.../语法。

    /((?=^[^0-9])(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,8})/
    
  2. 通过创建一个RegExp对象的实例,该对象在构造函数中接受正则表达式作为String。

    new RegExp("((?=^[^0-9])(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,8})")
    
  3. 即,

    if(/((?=^[^0-9])(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,8})/.test(strOldPassword)){
      alert("Something");
    }
    

答案 1 :(得分:1)

尝试以下方法:

if(/^(?=^[^0-9])(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,8})$/.test(strOldPassword))
// --                                                --

/.../分隔正则表达式文字,以便解析器知道要解析为正则表达式的内容,而不是javascript(很像单引号分隔字符串)。

^...$表示整个字符串应该匹配(否则你将测试至少 6-8个字符)。

// -- ... --只是一个评论,表明我已经开始做什么。

答案 2 :(得分:0)

知道了!

if (!(/((?=^[^0-9])(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,8})$/.test(strOldPassword)))
{
    jQuery('#txtOldPassword').addClass('error');
}

感谢小伙伴们。