PHP正确搜索固定长度字母数字字符串中的字符的模式

时间:2010-08-09 11:06:38

标签: php regex

我做了搜索,但我没有找到任何东西。我正在寻找一种模式,用于搜索字母“P”的字母数字字符串(长度精确为7)。这就是我想到的,为什么不工作?

$pattern = "/^[\wP]{7}$/";

4 个答案:

答案 0 :(得分:1)

好吧它没有用,因为[\wP]{7}(在你的正则表达式中:/^[\wP]{7}$?/)意味着找到7个字符,这些字符是单词字符或字母P.它可以找到所有的P并且它会匹配,或所有单词字符,它会匹配。我的快速解决方法是使用正则表达式验证字符串是7个字母长,然后执行字符串位置以查找"P"

if(preg_match("/^[\w]{7}$/", $target) && strpos($target, "P") != -1) {
    // Do stuff
}

答案 1 :(得分:0)

试试这个:

$ pattern ='/ ^([a-zA-Z0-9] {6})(P {1})$ /';

你可以使用strpos和strlen来提高速度!

答案 2 :(得分:0)

\w包含a-z, A-Z, 0-9_,因此根本不是您想要的。

我会尝试:

if ( preg_match("/^[a-z0-9]*P[a-z0-9]*$/i", $target) && ( strlen($target) == 7 ) ) { ... }

答案 3 :(得分:0)

这应匹配任何长度为7个字符且包含大写P:

的字符串
(?=^\w{7}$)\w*P\w*