0

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

  1. 必须在 6-8 个字符之间。
  2. 第一个字符不能是数字。
  3. 必须包含 1 个数字、1 个小写字母和 1 个大写字母。

这是我的正则表达式代码:

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

我在一个测试正则表达式代码的网站上对其进行了测试,它运行良好。

这是我目前的if语句:

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

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

有人可以帮我找出我做错了什么吗?谢谢。

4

3 回答 3

3

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

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

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

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

那是,

if(/((?=^[^0-9])(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,8})/.test(strOldPassword)){
  alert("Something");
}
于 2013-01-21T21:10:16.457 回答
1

尝试以下操作:

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

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

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

// -- ... --只是一个评论,表明我已经改变了。

于 2013-01-21T21:14:36.830 回答
0

知道了!

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

谢谢提醒伙计。

于 2013-01-21T21:31:23.153 回答