0
bid=
id=3D46799862
03005134012
 +92-345-540700(8)
(00996)-345.(123)/4567 
 bidid=3D46799862). +966 235 123456/7
    * Need to make a payment?  You can do it here (https://www.elance.com/p=+92 123 4567891
hp/project/main/projectInvoices.php?bidid=3D46799862).
    /receivingpmbmessages.html).
<a href=3D"http://help.elance.com/entries/20992337-valign=3D"bottom" style=3D"font-s=
ize:10px; color:#817f80;padding:0px;margin:0px;">1-877-435-2623 | Mon-Fri 8=

http://rubular.com/r/U0YZQ0GlbZ
RegEx测试(\d|\+)(\+|\d|\(|\)|-| |\.){7,}\b
预期匹配:

  1. 03005134012
  2. +92-345-540700(8)
  3. (00996)-345.(123)/4567
  4. +966 235 123456/7
  5. +92 123 4567891
  6. 1-877-435-2623

不正确的匹配:

  1. 匹配46799862但应该忽略,因为完整的单词是3D46799862
  2. 匹配+92-345-540700(8,它应该匹配+92-345-540700(8)
  3. 匹配00996)-345.(123但它应该匹配(00996)-345.(123)/4567
  4. 匹配46799862). +966 235 123456但它应该匹配+966 235 123456/7
  5. 匹配20992337-但它应该被忽略,因为它/20992337-valign=
4

2 回答 2

2

我假设您不需要只匹配 6 个预期匹配项的正则表达式。

这个正则表达式就是这样做的。

(?<!(?:\w|\/))(?:\d|\+|\()[\d ()\/\.-]+(?!\w)

它必须以 \d、+ 或 (. 开头。但前提是没有前面的 \w 或 /。

然后只需消耗一个或多个 [\d ()/.-] 但如果它以 \w 结尾则不

编辑

(?<...)是消极的回顾。在这种情况下,这意味着前面的字符不能匹配正则表达式...

(?!...)是负前瞻。所以像上面它意味着下一个字符不能匹配正则表达式...

上述两个结构都是非消耗的。

(?:...)是非捕获组

于 2013-09-17T12:23:18.630 回答
0
(\d|\+|\()(\+|\d|\(|\)|-| |\/){7,}(\d|\))+\b  

这个更准确...

于 2013-09-17T16:13:55.850 回答