如何用正则表达式实现这种模式

时间:2016-11-25 05:45:09

标签: jquery regex

我正在使用 jquery 实施 实时验证 ,并且我正在寻求帮助 正则表达式 符合我的要求。

要求:

密码必须为字母数字(即必须包含至少一个字母和一个整数),并且可能包含(即可选)特殊字符

我尝试过的内容:

以下是我尝试的代码,但它没有用。

jQuery("#bgpass").validate({
    expression: "if (VAL.match(/^(?=[A-Za-z0-9@%&#]$)(?=.*\d)(?=.*[A-Za-z]).*$/)) return true; else return false;",
    message: "Password must be alphanumeric and can contain some special characters"
  });

问题:

允许没有至少一个字母和一个整数的密码。

允许使用的示例:

1234567 - Doesn't contain atleast one alphabet. 
amazing - Doesn't contain atleast one integer. 
am@zing - Doesn't contain atleast one integer. 
123$567 - Doesn't contain atleast one alphabet.

我做错了什么!

P.S: 我对 正则表达式 非常陌生。

2 个答案:

答案 0 :(得分:1)

你有正则表达式的一些问题。您可以将其修改为

/^(?=.*\d)(?=.*[A-Za-z])/

Regex Demo

  • ^将正则表达式锚定在字符串的开头。

  • (?=.*\d)这是一个积极的展望。它检查字符串是否包含数字。

  • (?=.*[A-Za-z])另一个积极向前看。这将检查字符串是否包含任何后跟字母表的内容。

^(?=[A-Za-z0-9@%&#]$)(?=.*\d)(?=.*[A-Za-z]).*$/有什么问题?

  • ^(?=[A-Za-z0-9@%&#]$)这个积极向前看是指匹配字符串的开头^。检查列表中是否有任何内容后跟,然后立即匹配字符串$的结尾。这不是一个可能的情况。因此正则表达式将不匹配任何输入字符串。

答案 1 :(得分:1)

^(?=[A-Za-z0-9@%&#]+$)(?=.*\d)(?=.*[A-Za-z]).*$

                   ^^

你错过了一个量词。它的工作正常。你的代码有问题。

参见演示。

https://regex101.com/r/Jw8xty/1