【问题标题】:Putting together regex to highlight words inside a textbox [duplicate]将正则表达式放在一起以突出显示文本框中的单词[重复]
【发布时间】:2020-01-07 16:52:47
【问题描述】:

大家好,我正在尝试一种将多个项目名称添加到 regex 列表的简单方法:

var whatToLookFor = "DOZ,DOB".split(",");
var highlightThis = "";

$.each(whatToLookFor,function(i){
   highlightThis += whatToLookFor[i] + "\/|";
});

highlightThis = "\/" + highlightThis.replace(/.$/,"\/gi");

console.log(highlightThis);

/DOZ\/|DOB\//gi <-highlightThis should look like this

$('.string-example').highlightWithinTextarea({
    highlight: highlightThis
});

但是,我使用 highlightThis 获得的值与使用 /DOZ/|DOB//gi 时不同。我输出了 highlightThis 的值,它看起来应该是应该的,但由于某种原因仍然不起作用。

$('.string-example').highlightWithinTextarea({
    highlight: /DOZ\/|DOB\//gi
});

为了让它像 regex 值一样对待它,我可能缺少什么?我只是忽略了这可能很简单。 :o)

我使用的代码是here

最终工作代码

var whatToLookFor = "DOZ,DOB".split(",");
var highlightThis = "";

$.each(whatToLookFor,function(i){
    highlightThis += whatToLookFor[i] + "/|";
});

highlightThis = highlightThis.replace(/.$/,"");

$('.string-example').highlightWithinTextarea({
    highlight: new RegExp(highlightThis, 'gi')
});

【问题讨论】:

    标签: javascript jquery regex


    【解决方案1】:

    不同之处在于您将其创建为字符串与正则表达式。不要在最后添加gi,而是使用新的正则表达式并传入你的字符串,然后传入你的标志:

    new RegExp('DOZ\\/|DOB/', 'gi');
    

    这将输出你所期望的:

    /DOZ\/|DOB//gi
    

    【讨论】:

    • 如何在 csv 中工作?
    • 不确定我是否理解,修改您上面粘贴的javascript代码。
    • whatToLookFor 有我拆分的 CVS,在循环中我试图将它们放在一起,然后将其传递给 highlightThis
    • 这将在您的循环之后进行。
    • 是的,做到了。谢谢马特!
    猜你喜欢
    • 2013-06-16
    • 2012-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-31
    • 2021-08-14
    • 2017-05-11
    相关资源
    最近更新 更多