JavaScript正则表达式OR运算符

时间:2015-02-03 01:43:36

标签: javascript regex

在Twitter上看到了一个挑战,所以我一直在努力通过它,认为我不是最好的正则表达式。这就是我到目前为止所做的:

var pass_regex = new RegExp(/^[a-z][A-Z][0-9]|[!@#$%^&*()_]+$/);

我正在尝试匹配包含以下内容的密码输入:

  • 1小写字母
  • 1大写字母
  • 1位数或特殊字符

我遇到的问题是'OR'部分,我认为[0-9]和我的特殊字符集之间的管道分隔符可以工作但似乎没有。试图更好地理解如何使用正则表达式来检查1位数或1个特殊字符。提前感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:2)

Atleast one:

您需要使用基于前瞻性的正面regex来检查多个条件。

^(?=.*?[A-Z])(?=.*?[a-z]).*?[\W\d].*

OR

^(?=.*?[A-Z])(?=.*?[a-z]).*?[!@#$%^&*()_\d].*
  • (?=.*?[A-Z])断言必须至少有一个大写字母。
  • (?=.*?[a-z])至少一个小写字母。
  • .*?任意字符的非贪婪匹配零次或多次。
  • 如果满足上述条件,则匹配相应的字符串,并且字符串必须至少包含给定列表[!@#$%^&*()_\d]中的单个字符。此列表中的\d匹配任何数字字符。
  • .*匹配以下零个或多个字符。

DEMO