2009-09-03 93 views
2

我们有一个数据库,其中每个表名以WW开头。 我想在网页上显示一个SQL,但用链接包装每个表名。 例如:需要Javascript正则表达式替换为包装某些单词<a...>

"select * from wwx_something where ..." 

应该转变成:

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

可能有好几桌,当然,它不应该是区分大小写的。

我需要一个javascript正则表达式解决方案...我似乎无法得到它的工作。

+1

dupe:http://stackoverflow.com/questions/1216007/surrounding-all-instances-of-and-http-with-a – SilentGhost 2009-09-03 16:18:23

回答

2

解决方案使用单一replace

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

注意,我也喜欢这样的东西为暂定支持 “SELECT * FROM WWA JOIN 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:恕我直言,这是更好地包括/参与比赛,因为这样你对于与表名毫无关系的“ww”流浪者来说,更好的办法是......包括一些背景总是有助于消除歧义。

+0

是的,这更像它! (但我只需要一个组,我不需要匹配(FROM | JOIN))。 (我的替换字符串中没有使用“$ 1”,因为我认为我需要“\ 1”) 还有一件事情....我可以将$ 1中的一个转换为小写吗? (生成的URL中的一个) – 2009-09-03 17:51:25

相关问题