0

我正在寻找与 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] 它总是返回 ap 标签..我在一个 for 循环中...... :)

4

2 回答 2

1

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

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

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

/^[A-Z]+[^0-9]*/
于 2012-06-01T23:27:30.940 回答
0

如果字符串的任何部分与正则表达式匹配,preg_match 将匹配。如果要测试整个字符串,请使用 ^ 和 $ 表示字符串的开头和结尾。

于 2012-06-02T00:25:33.490 回答