2014-05-05 142 views
0

我刚刚对一个文件进行了一些编辑,当测试它似乎不起作用时,我做了一些调试,发现preg_match返回0,我查看了它并看不到有什么问题,也因为我还没有触及该文件的这一部分,我很困惑,到底发生了什么......preg_match函数的问题

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

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

谢谢,如果 P110

+0

http://regex101.com/r/zH4tA5 –

+0

你对这个preg_match有什么期待?你想匹配的模式是什么? –

+0

这应该与Tester123相匹配,因为你的正则表达式首先要查找大写字母 –

回答

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

+0

我会尽快尝试,如果它做我正在寻找的疾病标记为答案 – P110

+0

谢谢!这完美的作品! – P110

+0

@ P110:不客气。 – Toto

0

你的正则表达式的第一次测试有从A资本字母A到Z,然后,如果有从到z小写字母,然后如果有数字。由于你的字符串以小写字母开头,因此不匹配。

我认为要做到这一点

[A-Za-z0-9]+ 

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

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

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

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');

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

谢谢,它的工作,但当我试图实现它变得有趣,但我已经找到了答案,所以非常感谢 – P110