代码之家  ›  专栏  ›  技术社区  ›  Nick Perkins

需要javascript regex replace将certains单词包装为<a…>

  •  2
  • Nick Perkins  · 技术社区  · 15 年前

    我们有一个数据库,其中每个表名都以ww开头。 我想在网页上显示一个SQL,但是用一个链接包装每个表名。 例如:

    "select * from wwx_something where ..."
    

    应转化为:

    "select * from <a href='/table/wwx_something/'>wwx_something</a> where ..."
    

    当然,可能有几个表,而且不应该区分大小写。

    我需要一个javascript regex解决方案…我似乎不能让它工作。

    1 回复  |  直到 15 年前
        1
  •  3
  •   lapo    15 年前

    解决方案使用单个 replace :

    var re = /(FROM|JOIN)\s+(WW\S+)/gi;
    yourText.replace(re, "$1 <a href='$2'>$2</a>");
    

    请注意,我还初步支持“从WWA中选择*加入WWB”之类的内容。

    在注释后添加:是的,可以用自定义函数替换以大写URL:

    var re = /(FROM|JOIN)\s+(WW\S+)/gi;
    function change(s, p1, p2) {
        return p1 + " <a href='http://whatever/" + p2.toUpperCase() + "'>" + p2 + "</a>";
    }
    yourText.replace(re, change);
    

    ps:imho最好在比赛中加入from/join,因为这样您就可以更好地了解与表名无关的strays“ww”…包含一点上下文总是有助于消除歧义。