要改为的正则表达式必须包含至少一个数字和字母?

时间:2012-05-26 03:31:58

标签: php regex

我的正则表达式就像这样

'/[a-z0-9]{40}/i'

将匹配任何不包含字母和/或数字的空格的字符串。

如何更改它以便它必须至少包含至少一个数字和至少一个字母字符,以便如果字符串是所有数字或所有字母都不匹配?

由于

1 个答案:

答案 0 :(得分:2)

/([:alpha:].*[:digit:]|[:digit:].*[:alpha:])/

这需要一个数字跟随一个字母或一个字母跟随一个数字。

从原始正则表达式中,您似乎要强制要求总共40个字符。为此,请尝试:

/^(.*[:alpha:].*[:digit:].*|.*[:digit:].*[:alpha:].*){40}$/

注意额外的.*。只要有一个字母和一个数字,其他字符就可以是任何字符。只要有40个。

如果您想避免匹配空格,请将每个.*替换为[^[:space:]]*