2012-06-01 48 views
0

我正在尋找一個正則表達式用PHP使用:PHP - 用正則表達式兩個條件

我有4個字符串像這樣的數組:

$strA = 'John P. Beck'; // name and surname 
$strB = '12012 BlaBla Xx'; // street 
$strC = 'Houston TX 12345-6789'; // city + zip code 
$strD = '(123) 456-7890'; // telephone number 

到現在,我使用正則表達式在for循環中,但它總是返回我的第一個和第二個字符串,有時第一和第三串....

for($i = 0; $i < count($array); $i++) 
{ 
    if(preg_match("/[A-Z]/", $array[$i])) 
    { 
     echo $array[$i] . '<br>'; 
    } 
    else echo 'no match<br>'; 
} 

我需要這方面的條件正則表達式: - 至少1 UPP ercase字符串,絕對沒有數字...只返回STRA $ .....

非常感謝您

編輯

抱歉,也許我解釋我自己不好,不添加詳細信息... 這是陣列(例如)的結構:我需要存儲只有4根弦和14弦..等等

[0] => <p> 
[1] =>    41 
[2] => <br /> 
[3] =>    John P. Beck 
[4] => <br /> 
[5] =>    12012 BlaBla Xx 
[6] => <br /> 
[7] =>    Houston TX 12345-6789 
[8] => <br /> 
[9] =>    (123) 456-7890 
[10] => <br /> 
[11] =>    42 
[12] => <br /> 
[13] =>    Linda F. Green 
[14] => <br /> 
[15] =>    1888 BlaBla Xx 
[16] => <br /> 
[17] =>    Saint Louis, MO 12345-6789 
[18] => <br /> 
[19] =>    (123) 456-7890 
[20] => <br /> 
... 
... 
... 

...

@nickb:with $ array [0]它總是返回ap標記..我在for循環...... :)

+0

什麼是「john p。beck」? (只有H在upercase中)。應該通過還是不通? –

+0

'echo $ array [0];'。問題解決了。 – nickb

+0

是的,它會好的 – lollo

回答

1

0或更多字符(數字除外),後跟一個或多個大寫字母,其次是0個或更多字符(除位數):

/[^0-9]*[A-Z]+[^0-9]*/ 

如果你想你的數據由大寫字母開頭(S)字母(S):

/^[A-Z]+[^0-9]*/ 
+0

正則表達式解決它不行,同樣的問題...看看我的帖子編輯:) – lollo

+1

告訴我們2例子isn不夠,你應該明確指出你想要的。你在搜索每3個部分的名字嗎?像'xxxxx X. xxxx'或'Xxxxx X. xxx'或甚至'Xxxx X. Xx'? – zessx

+0

這個名字可以是琳達F.格林甚至琳達格林或其他任何東西,但沒有數字.. – lollo

0

的preg_match匹配,如果該字符串的任何部分都與正則表達式匹配。 如果要測試整個字符串,請使用^和$表示字符串的開始和結束。

+0

正則表達式的「m」正則表達式修飾符會將每個\ n視爲新字符串。 – jordanm

+0

@jordanm,no,'/ m'只改變'^'和'$'的匹配。 – Qtax