PHP - 正则表达式有两个条件

时间:2012-06-01 23:16:33

标签: php regex

我正在寻找与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个大写且绝对没有数字......只返回$ strA .....

非常感谢

修改

抱歉,也许我解释说自己很糟糕,没有添加细节...... 这是数组的结构(示例):

[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 />
...
...
...

我只需要存储第4个字符串和第14个字符串..依此类推......

@nickb:使用$ array [0]它总是返回一个p标签..我在for循环中......:)

2 个答案:

答案 0 :(得分:1)

0个或更多个字符(数字除外),后跟一个或多个大写字母,后跟0个或多个字符(数字除外):

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

如果您希望数据以大写字母开头:

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

答案 1 :(得分:0)

如果字符串的任何部分与正则表达式匹配,

preg_match将匹配。 如果要测试整个字符串,请使用^和$表示字符串的开头和结尾。