Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery:如何查找电话号码文本并在电话号码文本后附加图像_Jquery_Regex - Fatal编程技术网

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之后