2010-08-09 26 views
0

我做了一個搜索,但我沒有找到任何東西。我正在尋找一種模式,它將使用字母數字字符串(確切長度爲7)字母「P」進行搜索。這就是我到現在爲止想到的,爲什麼不工作?PHP在一個固定長度的字符串數字字符串中的右側搜索模式

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

您能否給一些積極的和消極的命中

我會嘗試一下呢? – 2010-08-09 11:09:07

+0

謝謝你們,我最終轉向了strlen和strpos – andrei 2010-08-09 23:24:08

回答

1

那麼它是不工作,因爲[\wP]{7}(在你的正則表達式:/^[\wP]{7}$?/)意味着找到7個字符或者是一個字字符或字母P.它可以找到所有的PS,它會匹配,或者所有文字字符,它會匹配。我快速的解決將是驗證字符串長度使用正則表達式7個字母,然後做一個字符串的位置找到"P"

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

嘗試這種情況:

$圖案= '/ ^([A-ZA-Z0-9] {6})(P {1})$ /';

你可以condider使用strpos和strlen來獲得速度!

+0

這種模式最終只會與P匹配。 – 2010-08-09 11:12:43

+0

我改變了它,所以它現在應該工作正確 – PimPee 2010-08-09 11:23:23

0

\w包含a-z, A-Z, 0-9_所以它是不是你想要的所有東西。

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

這應該與任何字符串,它是7個字符長,並且包含一個大寫的Y::

(?=^\w{7}$)\w*P\w*