我做了一個搜索,但我沒有找到任何東西。我正在尋找一種模式,它將使用字母數字字符串(確切長度爲7)字母「P」進行搜索。這就是我到現在爲止想到的,爲什麼不工作?PHP在一個固定長度的字符串數字字符串中的右側搜索模式
$pattern = "/^[\wP]{7}$/";
我做了一個搜索,但我沒有找到任何東西。我正在尋找一種模式,它將使用字母數字字符串(確切長度爲7)字母「P」進行搜索。這就是我到現在爲止想到的,爲什麼不工作?PHP在一個固定長度的字符串數字字符串中的右側搜索模式
$pattern = "/^[\wP]{7}$/";
那麼它是不工作,因爲[\wP]{7}
(在你的正則表達式:/^[\wP]{7}$?/
)意味着找到7個字符或者是一個字字符或字母P.它可以找到所有的PS,它會匹配,或者所有文字字符,它會匹配。我快速的解決將是驗證字符串長度使用正則表達式7個字母,然後做一個字符串的位置找到"P"
:
if(preg_match("/^[\w]{7}$/", $target) && strpos($target, "P") != -1) {
// Do stuff
}
嘗試這種情況:
$圖案= '/ ^([A-ZA-Z0-9] {6})(P {1})$ /';
你可以condider使用strpos和strlen來獲得速度!
這種模式最終只會與P匹配。 – 2010-08-09 11:12:43
我改變了它,所以它現在應該工作正確 – PimPee 2010-08-09 11:23:23
\w
包含a-z, A-Z, 0-9
和_
所以它是不是你想要的所有東西。
if (preg_match("/^[a-z0-9]*P[a-z0-9]*$/i", $target) && (strlen($target) == 7)) { ... }
這應該與任何字符串,它是7個字符長,並且包含一個大寫的Y::
(?=^\w{7}$)\w*P\w*
您能否給一些積極的和消極的命中
我會嘗試一下呢? – 2010-08-09 11:09:07
謝謝你們,我最終轉向了strlen和strpos – andrei 2010-08-09 23:24:08