preg_match函数的问题

时间:2014-05-05 09:05:37

标签: php preg-match

我刚刚对一个文件进行了一些编辑,当测试它似乎不起作用时,我做了一些调试,发现preg_match返回0,我已经查看了它,看不到问题是什么,因为我还没有触及文件的这一部分,我对可能发生的事情感到困惑......

<?php
echo preg_match('/[A-Z]+[a-z]+[0-9]+/', 'testeR123');
?>

这是我用于调试的片段,我猜测我的模式是错误的,但我可能错了。

谢谢, P110

4 个答案:

答案 0 :(得分:0)

你的正则表达式首先测试是否有从A到Z的大写字母然后是从at到z有小写字母然后是否有数字。因为你的字符串以小写字母开头,所以它不匹配。

我想你想要这样做

[A-Za-z0-9]+

或者,如果你需要你的字符串以lowecase字符串开头然后是大写字符串然后是数字你应该将正则表达式更改为。

[a-z]+[A-Z]+[0-9]+

这样你的当前字符串也适合正则表达式。

答案 1 :(得分:0)

问题是字母的顺序: 试试这个:

echo preg_match('/[a-z]+[A-Z]+[0-9]+/', 'testeR123');

或者:

echo preg_match('/[A-Z]+[a-z]+[0-9]+/', 'Rtest123');

或更简单

echo preg_match('/[A-Z]+[0-9]+/i', 'testeR123');

答案 2 :(得分:0)

<?php
preg_match('/([A-Za-z0-9]+)/', 'testeR123', $match);
echo $match[1];
?>

答案 3 :(得分:0)

根据你的评论:

  

我只是在寻找它来检查是否有大写,小写和数字,但是从回复中,我的模式会按顺序检查它

尝试使用:

preg_match('/^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])[A-Za-z0-9]+$/', $input_string);

,其中

(?=.*[A-Z])检查至少有一个大写字母
(?=.*[a-z])检查至少有一个小写字母
(?=.*[0-9])检查至少有一个数字
[A-Za-z0-9]+检查只有这些字符。

(?=...)被称为lookahead