需要帮助使用正则表达式查找电话号码和字符串

时间:2014-08-09 01:26:46

标签: regex

我是regex的新手,我正在尝试使用正则表达式来查找问号之后和管道之前的任何字符数以及电话号码。谁能帮帮我吗?以下是示例网址?

http://www.myurl.com?demo|15555555555

正则表达式应该找到" demo"和" 15555555555"

3 个答案:

答案 0 :(得分:1)

这是一个带有命名捕获组的正则表达式,我也试图涵盖不同数字格式的许多可能性

<强>正则表达式

(?<=\?)(?'name'[\w\s%]+)\|(?'phone'[\+\w-\(\)\s%]+)(?:\n|$)

测试字符串

http://www.myurl.com?demo|15555555555
http://www.myurl.com?Local|754-3010
http://www.myurl.com?Domestic|(541) 754-3010
http://www.myurl.com?International|+1-541-754-3010
http://www.myurl.com?Dialed in the US|1-541-754-3010
http://www.myurl.com?Dialed from Germany|001-541-754-3010
http://www.myurl.com?Dialed from France|191 541 754 3010
http://www.myurl.com?skype|155555-SKYPE
http://www.myurl.com?an%20escaped%20name|191%20541%20754%203010

<强>结果

  • 比赛1
    • name [21-25] demo
    • 电话[26-37] 15555555555
  • 比赛2
    • 姓名[59-64] Local
    • 电话[65-73] 754-3010
  • 比赛3
    • 姓名[95-103] Domestic
    • 电话[104-118] (541) 754-3010
  • 比赛4
    • 姓名[140-153] International
    • 电话[154-169] +1-541-754-3010
  • 比赛5
    • 姓名[191-207] Dialed in the US
    • 电话[208-222] 1-541-754-3010
  • 比赛6
    • 姓名[244-263] Dialed from Germany
    • 电话[264-280] 001-541-754-3010
  • 比赛7
    • 姓名[302-320] Dialed from France
    • 电话[321-337] 191 541 754 3010
  • 比赛8
    • 姓名[359-364] skype
    • 电话[365-377] 155555-SKYPE
  • 比赛9
    • 姓名[444-463] an%20escaped%20name
    • 电话[464-486] 191%20541%20754%203010

尝试demo here

答案 1 :(得分:0)

如果您自己创建该链接,我建议您编写一个通用的$ GET变量。你不会需要任何正则表达式。

http://www.myurl.com?demo=15555555555

echo htmlspecialchars($_GET["demo"]);

答案 2 :(得分:0)

您可以使用此正则表达式:

\?(\w+)\|(\d+)

<强> Working demo

enter image description here

MATCH 1
1.  [21-25] `demo`
2.  [26-37] `15555555555`