我刚刚对一个文件进行了一些编辑,当测试它似乎不起作用时,我做了一些调试,发现preg_match返回0,我查看了它并看不到有什么问题,也因为我还没有触及该文件的这一部分,我很困惑,到底发生了什么......preg_match函数的问题
<?php
echo preg_match('/[A-Z]+[a-z]+[0-9]+/', 'testeR123');
?>
这是我使用的用于调试的代码片段,我猜猜我的模式是错误的,但我可能是错误的。
谢谢,如果 P110
我刚刚对一个文件进行了一些编辑,当测试它似乎不起作用时,我做了一些调试,发现preg_match返回0,我查看了它并看不到有什么问题,也因为我还没有触及该文件的这一部分,我很困惑,到底发生了什么......preg_match函数的问题
<?php
echo preg_match('/[A-Z]+[a-z]+[0-9]+/', 'testeR123');
?>
这是我使用的用于调试的代码片段,我猜猜我的模式是错误的,但我可能是错误的。
谢谢,如果 P110
根据您的评论:
我只是在寻找它来检查,如果有一个大写字母,小写字母和一个数字,但是从回复,因为我的检查模式的顺序
有一试:
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。
你的正则表达式的第一次测试有从A资本字母A到Z,然后,如果有从到z小写字母,然后如果有数字。由于你的字符串以小写字母开头,因此不匹配。
我认为要做到这一点
[A-Za-z0-9]+
或者,如果你需要,你的字符串,其lowecase字符串,则大写字符串,然后数字开头,你应该改变的正则表达式。
[a-z]+[A-Z]+[0-9]+
这样你的当前字符串也适合正则表达式。
的问题是字母的顺序: 试试这个:
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');
<?php
preg_match('/([A-Za-z0-9]+)/', 'testeR123', $match);
echo $match[1];
?>
谢谢,它的工作,但当我试图实现它变得有趣,但我已经找到了答案,所以非常感谢 – P110
http://regex101.com/r/zH4tA5 –
你对这个preg_match有什么期待?你想匹配的模式是什么? –
这应该与Tester123相匹配,因为你的正则表达式首先要查找大写字母 –