查找(正则表达式?)一行10位数字(PHP)

查找(正则表达式?)一行10位数字(PHP),php,regex,Php,Regex,我面临着一个我无法解决的问题。我有一个由不需要的文本和10位数字组成的字符串,这些数字总是以“2”或“6”开头。我需要把那些10位数的数字放到一个数组中。我想到了regex,发现这篇文章非常接近我需要的东西(除了降序/升序的东西),但是,因为我永远也不会理解regex,我不能根据我的需要修改它。如果有人能在这里帮助我,我将不胜感激 以下是我的字符串示例: ".........693 7098469 - ZQH X Bop. Hrtepou 50 flerpoUrroXn ........210

我面临着一个我无法解决的问题。我有一个由不需要的文本和10位数字组成的字符串,这些数字总是以“2”或“6”开头。我需要把那些10位数的数字放到一个数组中。我想到了regex,发现这篇文章非常接近我需要的东西(除了降序/升序的东西),但是,因为我永远也不会理解regex,我不能根据我的需要修改它。如果有人能在这里帮助我,我将不胜感激

以下是我的字符串示例:

".........693 7098469 - ZQH X Bop. Hrtepou 50 flerpoUrroXn ........210 5014166 - 0E000PA E KapaoAn Anpn-rPou 21
EAArivtg .....................................................210 9618677 - MAPIA KapaoAri Arpn-rptou 21 Elanvolo .. 210 9643623 - MAPIA E ...................................................... 210 9643887 - MAPIA 0 loucrrivou 8 HX.toOrran ..............210 9914534 AIPITAKHE APTEMIOE n Avrtnopou 22
Reptcrrept ....._.........._......._................697 7440896 , -10AN."
提前非常感谢! 来自希腊的问候

可能是这样的:

<?php
$x=
".........693 7098469 - ZQH X Bop. Hrtepou 50 flerpoUrroXn ........210 5014166 - 0E000PA E KapaoAn Anpn-rPou 21     EAArivtg  ....................................................210 9618677 - MAPIA KapaoAri Arpn-rptou 21 Elanvolo .. 210 9643623 - MAPIA E ...................................................... 210 9643887 - MAPIA 0 loucrrivou 8 HX.toOrran ..............210 9914534 AIPITAKHE APTEMIOE n Avrtnopou 22
Reptcrrept ....._.........._......._................697 7440896 , -10AN.";
$x=str_replace(' ','',$x);
preg_match_all('/((2|6)\d{9})/',$x,$matches);
print_r($matches[0]);

正如我看到的字符串,您的数字之间有一个空格,如果您希望严格地进行选择,这是正则表达式:

[62]\d{2}\s*\d{7}
说明

[62]    # Start with 6 or 2
\d{2}   # 2 more digits
\s*     # any number of white spaces
\d{7}   # 7 more digits
Array
(
    [0] => 693 7098469
    [1] => 210 5014166
    [2] => 210 9618677
    [3] => 210 9643623
    [4] => 210 9643887
    [5] => 210 9914534
    [6] => 697 7440896
)

和PHP代码,它具有
preg\u match\u all
以匹配这些字符串的所有出现:

preg_match_all("/[62]\d{2}\s*\d{7}/", $text, $matches);
输出

[62]    # Start with 6 or 2
\d{2}   # 2 more digits
\s*     # any number of white spaces
\d{7}   # 7 more digits
Array
(
    [0] => 693 7098469
    [1] => 210 5014166
    [2] => 210 9618677
    [3] => 210 9643623
    [4] => 210 9643887
    [5] => 210 9914534
    [6] => 697 7440896
)

有一个非常酷的页面,可以可视化regex代码以更好地理解:

这应该行得通

((?:2|6)[0-9]{2}[0-9]{7})


感谢您的编辑。。。我在那里找不到该死的代码块!:-)可以你试过什么?告诉我们你尝试了什么以及为什么没有成功。你的预期结果是什么?@anubhava,所有数字如
6937098469
210 5014166
,等等。。以
2
6
开头的数字。您可以执行此reg exp。它几乎比登录操作系统简单。。。“我不能做正则表达式”听起来像是让别人做你工作的借口。非常感谢你的解释!我真的认为正则表达式将永远是我的克星……@JimBadanis Kapirnas,除了它的正则名称-正则表达式-它太恶心了!