PHP糟糕的正则表达式

时间:2012-07-29 01:38:10

标签: php regex

嘿,我在下一行收到一个非常具描述性的REG_BADRPT错误:

if(ereg('(?=^.{8,20}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$', $_POST['password']))

任何人都可以看到问题所在吗?

我在javascript中使用了相同的正则表达式并且工作正常,所以不确定这里的问题是什么。

我在这里尝试实现的是设置一个正则表达式,它将验证包含以下内容的字符串:

  • 至少一封小写字母
  • 至少一个大写字母
  • 至少一个数字或符号
  • ,长度应在8到20个字符之间

2 个答案:

答案 0 :(得分:4)

Ereg在php 5.3中已被弃用。尝试使用preg_match('/(?=^.{8,20}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$/', $string),看看是否仍然出现错误。

答案 1 :(得分:0)

好吧,我最后用这个改变正则表达式,它运行正常:

if(preg_match("#.*^(?=.{8,20})(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9]).*$#", $_POST['password']))

Stil之前不知道问题是什么