我做了搜索,但我没有找到任何东西。我正在寻找一种模式,用于搜索字母“P”的字母数字字符串(长度精确为7)。这就是我想到的,为什么不工作?
$pattern = "/^[\wP]{7}$/";
答案 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*