我需要写一个正则表达式,它将匹配字符:a-z A-Z 0-9 .!$%&-_@#
,没有空格,并且可以按任何可能的顺序,但我对正则表达式的了解很好,比如说,比专家更接近0。并且至少需要有一个数字、一个特殊字符和一个字母。
我自己能做的:
[Sw.!$%&-_@#][^ ]{6,}
但我不确定它会像我想象的那样起作用。
问题:
我怎样才能使它匹配整个单词而不仅仅是它的一部分?
编辑:我已经测试过了,但它不符合要求:
并且至少需要有一个数字、一个特殊字符和一个字母。
示例:
不匹配:
aS1@.&%~+
asd dfgf
axf1345
1s4%z_-@#$ .!$%&-_@#
正确:
a1S#@%._
1aCF3%&
Abloct2$
@anubhava回答:
^(?=.*?[0-9])(?=.*?[a-zA-Z])(?=.*?[_.!$%&@#-])[w.!$%&@#-]{6,}$
您可以使用这个基于前瞻性的正则表达式:
^(?=.*?[0-9])(?=.*?[a-zA-Z])(?=.*?[_.!$%&@#-])[w.!$%&@#-]{6,}$
(?=.*?[0-9])
是确保至少有一个数字的前瞻性(?=.*?[a-zA-Z])
是确保至少有一个字母表的前瞻性(?=.*?[.!$%&@#-])
是一个前瞻,以确保至少有一个特殊字符
RegEx演示
/[0-9a-zA-Z$%&]+/
试试看下面的链接(页面中间部分)regex详细信息