什么是正则表达式,以确保给定的字符串至少包含以下每个类别中的一个字符。正则表达式确保字符串至少包含一个小写字母,大写字母,数字和符号
- 小写字符
- 大写字符
- 位数
- 符号
我知道各组分别[a-z]
,[A-Z]
,\d
和_|[^\w]
模式(我让他们正确的,没”我呢?)。
但是,如何将它们结合起来,以确保字符串包含所有这些以任何顺序?
什么是正则表达式,以确保给定的字符串至少包含以下每个类别中的一个字符。正则表达式确保字符串至少包含一个小写字母,大写字母,数字和符号
我知道各组分别[a-z]
,[A-Z]
,\d
和_|[^\w]
模式(我让他们正确的,没”我呢?)。
但是,如何将它们结合起来,以确保字符串包含所有这些以任何顺序?
如果你需要一个单一的正则表达式,请尝试:
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*(_|[^\w])).+$
的简短解释:
^ // the start of the string
(?=.*[a-z]) // use positive look ahead to see if at least one lower case letter exists
(?=.*[A-Z]) // use positive look ahead to see if at least one upper case letter exists
(?=.*\d) // use positive look ahead to see if at least one digit exists
(?=.*[_\W]) // use positive look ahead to see if at least one underscore or non-word character exists
.+ // gobble up the entire string
$ // the end of the string
和我一起SilentGhost同意,[_\W]
可能会有点广阔。我会用这样的字符集替换它:[[email protected]#$%^&*.,?]
(随意添加更多当然!)
您可以分别匹配这三个组,并确保它们都存在。另外,似乎有点太宽泛,但如果这是你想要的,你可能想用\W
替换它。
谢谢。我不知道\ W。只是看它,发现它匹配Not Word。 \ W和[\ W]之间是否有区别? [\ W]是多余的吗? – Amarghosh 2009-10-14 04:29:13
@Amarghosh,是的,'\ W'和'[\ W]'结果相同。 – 2009-10-14 05:31:09
巴特基尔斯,你的正则表达式有几个问题。最好的办法是这样的:
(.*[a-z].*) // For lower cases
(.*[A-Z].*) // For upper cases
(.*\d.*) // For digits
这样你就可以搜索,无论是在开始,结束还是在中间。在你有我有很多麻烦复杂的密码。
什么平台/正则表达式? Bart的回答是对的,但是前瞻断言在JavaScript中不可靠,例如。 – bobince 2009-10-13 12:31:18
无处不在 - 我正在学习正则表达式。有没有可以在JavaScript中使用的替代方法? – Amarghosh 2009-10-14 08:22:44
@bobince嘿,我想知道为什么前瞻断言在Javascript中不可靠。有没有关于这方面的写作? – 2013-10-07 21:18:35