Regex 如何改进正则表达式?
我需要编写一个匹配字符的正则表达式:Regex 如何改进正则表达式?,regex,Regex,我需要编写一个匹配字符的正则表达式:a-z a-z 0-9.!$%&-_@#没有空格,并且以任何可能的顺序排列,但是我对正则表达式的了解非常好,可以说比expert更接近于0。并且需要至少有一个数字、一个特殊字符和一个字母 我自己能做的是: [\S\w\.!$%&-_@#][^ ]{6,} 但我不确定它会像我想象的那样工作 问题: 我怎样才能使它匹配整个单词而不是它的一部分 编辑: 我已经测试过了,但不符合以下要求: 并且需要至少有一个数字、一个特殊字符和一个字母 示例: 不匹配: a
a-z a-z 0-9.!$%&-_@#
没有空格,并且以任何可能的顺序排列,但是我对正则表达式的了解非常好,可以说比expert更接近于0。并且需要至少有一个数字、一个特殊字符和一个字母
我自己能做的是:
[\S\w\.!$%&-_@#][^ ]{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])
是一种前瞻性方法,可确保至少有一个字母表
(?=.*?[.!$%&@#-])
是一种前瞻性方法,可确保至少有一个特殊字符
尝试此查看详细信息下面的链接(页面中间部分)添加锚定^
和$
,使用mulltiline
标记\S
将包括所有内容,而不是空格=Unicode的其余部分。@nhahdh您是否建议我需要将\S
更改为a-zA-Z
?@harry180:删除它,因为\w
已经涵盖了a-zA-Z0-9.
@harry180:添加一些有效和无效匹配的示例。我认为*?
应该是[\w.!$%&@#-]*
,否则“a1”将匹配。哦,那么在行中的任何位置?我认为Q是连续的。@anubhava现在这个正则表达式不能确保提供的字符串中有6个以上的字符。要使其正确:^(?=.[0-9])(?=.[a-zA-Z])(?=.[!$%&@#-])[\w.!$%&@#-]{6,}+$
/[0-9a-zA-Z\$%&]+/