如何使用regex选择特定div中所有出现的电话号码,并使用jquery将其替换为新代码



假设我有div和下一个内容

<body> <div id="mydiv">This is some number +387(0)61 833-312. Here is one more number +385 (95) 837 312 . <p> One more number here +385(95) 835-312</p> <p>One more number 061/665-151</p>One more phone: 061-353-654</p></div> </body>

我需要带有regex的jquery,它将在文档加载时用替换每个电话号码

<span class="telefon" data-last="PHONENUMBER"><span class="telefon2">click here to show</span></span>

因此输出为:

<body>
<div id="mydiv">This is some number <span class="telefon" data-last="+387(0)61 833-312"><span class="telefon2">click here to show</span></span>. Here is one more number <span class="telefon" data-last="+385 (95) 837 312"><span class="telefon2">click here to show</span></span> <p> One more number here <span class="telefon" data-last="+385(95) 835-312"><span class="telefon2">click here to show</span></span></p> <p>One more number <span class="telefon" data-last="061/665-151"><span class="telefon2">click here to show</span></span> </p>One more phone: <span class="telefon" data-last="061-353-654"><span class="telefon2">click here to show</span></span></p></div>
</body>

这是我构建的正则表达式:

/[+]{0,1}[d]{1,4}[s]{0,1}[/]{0,1}[(]{0,1}[d]{0,3}[)]{0,1}s{0,1}d{2,4}[-]{0,1}[s]{0,1}[d]{2,4}[-]{0,1}[s]{0,1}[d]{1,4}/gm

我的代码中已经有了这个jquery,我需要在这个代码之前运行这个解决方案:

<script>
$(document).ready(function() {
$('.telefon').toggle(function() {
$(this).find('span').text('Click to show');
}, function() {
$(this).find('span').text($(this).data('last'));
}).click();
});

.telefon类实际上存在于html代码中。

编辑:Pedro Lobito为第一部分提供了解决方案,但我如何在上面的代码之前执行Pedro洛比托代码?我试着把他的代码放在下面,但regex没有运行,我的意思是它输出1美元,而不是我们写的html代码。

您可以尝试以下操作:

result = $('#mydiv').prop('outerHTML').replace(/(?!s|/)([d+()s/-]+)/mg, '<span class="telefon" data-last="$1"><span class="telefon2">click here to show</span></span>');
$("#mydiv").html(result);
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
<div id="mydiv">
This is some number +387(0)61 833-312. Here is one more number +385 (95) 837 312 . <p> One more number here +385(95) 835-312</p> <p>One more number 061/665-151</p>One more phone: 061-353-654</p>
</div>
</body>
</html>


备注:

  1. 正则表达式适用于提供的字符串,但可能不适用于其他示例
  2. Regex演示

最新更新