我正在做一个JavaScript插件,在每次页面加载时启动,用链接替换每个匹配的结构......该链接重定向到Web应用程序/数据库。适用于Mount& Blade游戏的编码器资源。
理论上很容易,但我在成功的道路上遇到了巨大的障碍:正则表达式。
即使是名为QuickRegex的程序帮助我也无法获得匹配的结构。或者,如果我没有做适当的调节,它会输出错误的结果。匹配结构如下:
(item_set_slot, "itm_heavy_crossbow", slot_item_multiplayer_item_class),
我想选择item_set_slot
并将其转换为指向http://mbcommands.ollclan.eu/#$1
这是我正在使用的代码,它或多或少都有效。 ;)
/* Mount&Blade Command Database Linking by Swyter */
function swymbcommandshooker(){
/* Regular HTML Expressions */
document.getElementsByTagName("body")[0].innerHTML=document.getElementsByTagName("body")[0].innerHTML.replace(/[\(]([a-zA-Z_]+)[\,]/gi, "(<a href='http://mbcommands.ollclan.eu/#$1' title='[?] Take an look in the Command Database' target='_blank'>$1</a>,");
/* Python highlighter Support...*/
document.getElementsByTagName("body")[0].innerHTML=document.getElementsByTagName("body")[0].innerHTML.replace(/(</span>([_a-z]+)\,/gi, "(</span><a href='http://mbcommands.ollclan.eu/#$1' title='[?] Take an look in the Command Database' target='_blank'>$1</a>,");
}
addOnloadHook( swymbcommandshooker );
提前致谢。
答案 0 :(得分:1)
嗯,我不确定我是否理解正确,但是如果你真的只想在“(item_set_slot,”itm_heavy_crossbow“,slot_item_multiplayer_item_class)中匹配”item_set_slot“,那么以下正则表达式应该这样做:
/^\(([a-z_]+),/i
生成URL的JavaScript可能如下所示:
var tuple = '(item_set_slot, "itm_heavy_crossbow", slot_item_multiplayer_item_class),';
var url = tuple.replace(/^\(([a-z_]+),.*/i, 'http://mbcommands.ollclan.eu/#$1');
请注意正则表达式中附加的.*
,这是匹配元组其余部分所必需的。