使用正则表达式:确保字段包含特殊字符和数字

时间:2012-08-07 20:15:39

标签: regex

我正在尝试创建一个正则表达式来检查字段,并确保它包括(特殊字符或数字),包括所有其他字符。我没能正确地做到这一点。

我一直在使用像http://www.gskinner.com/RegExr/这样的正则表达式网站给我一些帮助,并确保我做对了,但我不是。

我得到的最接近的是:

(?!^[0-9]*$)(?!^[a-zA-Z!@#$%^&*()_+=<>?]*$)^([a-zA-Z!@#$%^&*()_+=<>?0-9]{6,15})$

它会检查所有内容,尽管需要有一个数字。但我需要它有一个数字或特殊字符。

2 个答案:

答案 0 :(得分:1)

这需要一个数字和一个特殊字符:

[^\s\w].*\d|\d.*[^\s\w]

这需要一个数字或一个特殊字符:

\d|[^\s\w]

竖线字符'|'是指OR。

如果同时存在特殊字符和数字,则此匹配整行:

.*(:?[^\s\w].*\d|\d.*[^\s\w]).*

如果有特殊字符或数字,则此匹配整行:

.*(?:\d|[^\s\w]).*

答案 1 :(得分:0)

特殊字符或数字?那么,[^A-Za-z_ ]可能就足够了。

编辑:

因此,如果您正在尝试进行密码验证,那么这一点非常简单,具有积极的前瞻性。无耻被盗:http://www.mkyong.com/regular-expressions/how-to-validate-password-with-regular-expression/

(           # Start of group
  (?=.*\d)      #   must contains one digit from 0-9
  (?=.*[a-z])       #   must contains one lowercase characters
  (?=.*[A-Z])       #   must contains one uppercase characters
  (?=.*[@#$%])      #   must contains one special symbols in the list "@#$%"
              .     #     match anything with previous condition checking
                {6,20}  #        length at least 6 characters and maximum of 20 
)