如何改进正则表达式



我需要写一个正则表达式,它将匹配字符: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详细信息

最新更新