Jquery:如何查找电话号码文本并在电话号码文本后附加图像
我需要在页面上找到电话号码,并在电话号码后添加图像 我是这样做的Jquery:如何查找电话号码文本并在电话号码文本后附加图像,jquery,regex,Jquery,Regex,我需要在页面上找到电话号码,并在电话号码后添加图像 我是这样做的 $("body:first").each(function(){ // Create a REGEX Expression to detetc a phone number var regex =/\+\d{0,3}[-.\s]?\(?\d?\)?[-.\s]?\s?\d{1,4}[-.\s]?\d{1,9}[-.\s]?\d{5}/g; var text = $(this).html(); text = text.mat
$("body:first").each(function(){
// Create a REGEX Expression to detetc a phone number
var regex =/\+\d{0,3}[-.\s]?\(?\d?\)?[-.\s]?\s?\d{1,4}[-.\s]?\d{1,9}[-.\s]?\d{5}/g;
var text = $(this).html();
text = text.match(regex).after('<img src="https://callhippo.com/dist/img/favicon_callhippo.png"/>');
$("body:first").html(text);
});
$(“body:first”)。每个(函数(){
//创建正则表达式以指定电话号码
var regex=/\+\d{0,3}[-.\s]?\(?\d?\)?[-.\s]?\s?\d{1,4}[-.\s]?\d{1,9}[-.\s]?\d{5}/g;
var text=$(this.html();
text=text.match(regex).after(“”);
$(“body:first”).html(文本);
});
您可以尝试以下方法:
const regex=/(\+\d{0,3}[-.\s]?\(?\d?\)?[-.\s]?\s?\d{1,4}[-.\s]?\d{1,9}[-.\s]?\d{5})/g;
常量str=`abcd+8801917308239 pqrs hijk`;
常量subst=`1`;
const result=str.replace(regex,subst);
控制台日志(结果)代码>以下代码具有除正则表达式匹配失败以外的所需行为。您的代码失败,因为您没有阅读任何函数的文档.each()
迭代所有匹配的元素body
应该只在文档中出现一次,这样您就不需要:first
。而是迭代p
或任何包含文本的内容。Next.after()
应该在另一个DOM之后插入一个DOM(或其中的任何内容)。您要求它在字符串数组之后插入dom。这就是调用.after()时出现未定义错误的原因。现在,如果没有匹配项,则match()
将为您提供null,因此您需要在执行任何其他操作之前确保它不为null。我让它用电话号码替换线路,使之成为电话号码
当然,match()
$(“body p”)。每个(函数(){
//创建正则表达式以指定电话号码
re=//^.+//正确正则表达式的占位符
var text=$(this.html();
var nums=re.exec(text);//这不匹配,因为您的正则表达式
如果(nums!=null){
$(本)。在('')之后;
//$(this.html(nums.infrade(“,”);将用所有电话号码替换该行
}
});代码>
我的电话号码是555-555-5555
111-111-1111是一个很酷的电话号码
您没有提到抛出的错误text.match(regex).after()肯定会抛出一个。请看,这可能有助于解释为什么OP的方法不起作用,并有助于产生结果:“$1这不是必需的文本将仅在p标签中,我正在全球范围内开发此工具网页,就像skype在每个电话号码后显示其图标一样。最好的做法是为您希望找到的DOM类型创建一个类,这样您就可以在所有这些页面上使用.each()
。通常,如果将其更改为body
,它将在html标记的其余部分上循环。$(“body”).each(function(){var regex=/\+\d{0,3}[-.\s]?(?\d?[-.\s]?\d{1,4}[-.\s]?\d{1,9}[-.\s]?\d{5}/g;var text=$(this.html();var nums=text.match(regex)//这与您的regex不匹配,因为您的regex=null!){console.log(“hello”);$(this.after('这样做了,但没有结果),它附加在body end之后