Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.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替换$sign在字符串末尾添加$signs_Jquery - Fatal编程技术网

jQuery替换$sign在字符串末尾添加$signs

jQuery替换$sign在字符串末尾添加$signs,jquery,Jquery,所以,我的总体项目是通过PHP的imap从AJAX调用中获取电子邮件。那是完全的。我有所有的电子邮件,它们是分开的 我现在正在浏览每封电子邮件,并通过将单词替换为word来“突出显示”某些单词。大多数情况下,这是有效的。我希望能够用一个美元符号来做这件事,但这会引起一个非常奇怪的问题 假设我有一封电子邮件,上面写着: It will cost $500. How's thursday sound? 我有一个数组,其中充满了我想“突出显示”的单词: (省略号显示在您看到的内容之前和之后有许多关

所以,我的总体项目是通过PHP的imap从AJAX调用中获取电子邮件。那是完全的。我有所有的电子邮件,它们是分开的

我现在正在浏览每封电子邮件,并通过将单词替换为
word
来“突出显示”某些单词。大多数情况下,这是有效的。我希望能够用一个美元符号来做这件事,但这会引起一个非常奇怪的问题

假设我有一封电子邮件,上面写着:

It will cost $500.  How's thursday sound?
我有一个数组,其中充满了我想“突出显示”的单词:

(省略号显示在您看到的内容之前和之后有许多关键字)

我用这个来替换每个单词,并将其加粗:

function highlightImportant(that) {
    that.find('.email-container').each(function(){
        var full_text = $(this).text();
        $.each(keywords, function(i) {
            full_text = full_text.replace(new RegExp(keywords[i],"gi"), "<b>"+keywords[i]+"</b>");
        });
       $(this).html(full_text);
    });
} 
功能高亮重要(即){
.find('.email container').each(function(){
var full_text=$(this).text();
$.each(关键字、函数(i){
全文=全文。替换(新的RegExp(关键字[i],“gi”),“+关键字[i]+”);
});
$(this).html(全文);
});
} 
这适用于所有的单词和字符,但美元符号的行为非常奇怪。问题是,出于某种原因,当它运行时,每次都会在电子邮件(字符串)的末尾添加一个美元符号,然后只将该美元符号加粗。。。。因此,每封电子邮件的结尾都会增加一个美元符号:

It will cost $<b>5</b><b>0</b><b>0</b>.  How's <b>thursday</b> sound?<b>$</b>
将花费500美元。星期四怎么样$
请注意,
$500
开头的美元符号不是粗体,而是在字符串末尾添加了美元符号

看看这把小提琴,自己看看:

使用
newregexp(“\\”+关键字[i],“gi”)
处理特殊字符<代码>$是一个特殊字符


如果希望扩展关键字以包含正则表达式,则需要将转义添加到数组中的项中,而不是直接添加到RegExp中。对于您当前拥有的内容,@void是正确的,但如果您想进行更复杂的搜索,例如以“Who”、“what”、“Where”、“Why”或“When”开头的句子(例如,试图确定正在解析的句子是否是一个问题),则可以使用“^Wh(o | at | ere | y | en”之类的内容因为克拉对你来说意味着特别的东西

只是为将来的设计考虑做准备


另外,根据您的代码,“gi”表示全局和不区分大小写。“Friday”和“Friday”会导致更多的循环,降低页面的性能。

太棒了!谢谢-在期限届满时接受。我认为这与特殊角色有关,但我不知道如何逃离它们伟大的信息-非常感谢你,+1的信息。说到正则表达式,我完全不称职,需要学习更多。
It will cost $<b>5</b><b>0</b><b>0</b>.  How's <b>thursday</b> sound?<b>$</b>