【发布时间】:2020-05-13 16:54:31
【问题描述】:
我有一个正则表达式,可以完美地处理我想要获取的数字,但问题在于也获取它们的 URL,我该如何删除它们?
如果没有空格、换行之类的就跳过?
谢谢!!
我当前的正则表达式是:
/((?(0{1,2}|+)\d{1,2})?)?(([ -]*\d+){8,20})+/gm
https://regex101.com/r/yzAScj/1
我所做的修改不起作用:
/\s{1}((?(0{1,2}|+)\d{1,2})?)?(([ -]*\d+){8,20})+\ s{0,1}/gm
https://regex101.com/r/yzAScj/2
测试文本:
https://asd.com/20441235534-aaaaaaaaaaa-
202460676
aasdasd 202460676
https://asd.com/20441235534
202460676-
10 text
1234 text
text 123
00491234567890
+491234567890
0123-4567890
0123 4567 789
0123 456 7890
0123 45 67 789
+490123 4567 789
+490123 456 7890
+49 123 45 67 789
123 4567 789
123 456 7890
123 45 67 789
+49 1234567890
+491234567890
0049 1234567890
0049 1234 567 890
(0049)1234567890
(+49)1234567890
(0049) 1234567890
(+49) 1234567890
text text (0049) 1234567890 text text
text text (+49) 1234567890 text text
使电话号码具有链接“电话:”以便能够点击它们。
您不应选择 URL 作为电话号码。
JS代码(带jquery):
函数 searchAndReplacePhones(){
var regex = /(\(?(0{1,2}|\+)\d{1,2}\)?)?(([ -]*\d+){8,20})+/gm;
//Beschreibung
$(".my_text").html($(".my_text").html().replace(regex, " <a href=\"tel:$&\">$&</a> "));
}
【问题讨论】:
-
你的正则表达式风格是什么?
regexp-replace暗示了 Oracle,但您可能已经使用过它,因为您计划在某些替换方法中使用正则表达式。哪一个? -
我用 JS 和 Jquery 替换
-
我也相信你原来的正则表达式
(\(?(0{1,2}|\+)\d{1,2}\)?)?(([ -]*\d+){8,20})+有点不对劲,你想匹配包含8到20位数字的电话号码,对吧?您将\d量化为+,现在您匹配 8 到 20 个以空格或连字符分隔的 1+ 数字块,这可能太多了。 -
你实际上在做什么?用一些标签包装数字?
-
它使电话号码具有链接“tel:”以便能够点击它们,但它不应将 URL 作为电话。我刚刚编辑了帖子。谢谢!
标签: regex regexp-replace