如何提高正则表达式?

时间:2014-10-30 10:47:28

标签: regex

我需要编写一个正则表达式,它将匹配字符:a-z A-Z 0-9 .!$%&-_@#,没有空格和任何可能的顺序,但我对正则表达式的了解很好,可以说比专家更接近0。并且至少需要1个数字,1个特殊字符和1个字母。

我能够独立完成的事情:

[\S\w\.!$%&-_@#][^ ]{6,}

但是我不确定它会像我假设的那样工作。

问题:

我怎样才能使这个词不仅仅与整个单词相匹配呢?

修改 我已经对它进行了测试,并且没有达到这个目的:

  

并且需要至少1个数字,1个特殊字符和1个字母。

示例:

不匹配:

aS1@.&%~+

asd dfgf

axf1345

1s4%z_-@#$ .!$%&-_@#

正确的:

a1S#@%._

1aCF3%&

Abloct2$

@anubhava回答:

^(?=.*?[0-9])(?=.*?[a-zA-Z])(?=.*?[_.!$%&@#-])[\w.!$%&@#-]{6,}$

2 个答案:

答案 0 :(得分:1)

您可以使用这个基于前瞻性的正则表达式:

^(?=.*?[0-9])(?=.*?[a-zA-Z])(?=.*?[_.!$%&@#-])[\w.!$%&@#-]{6,}$
  • (?=.*?[0-9])是确保至少有一个数字
  • 的先行者
  • (?=.*?[a-zA-Z])是确保至少有一个字母
  • 的先行者
  • (?=.*?[.!$%&@#-])是确保至少有一个特殊字符
  • 的先行者

RegEx Demo

答案 1 :(得分:0)

/[0-9a-zA-Z\$%&]+/

请尝试按照链接(页面中间部分)regex details

查看详细信息