Javascript 用于unicode的正则表达式,带有标记[[WikiLinks]]

Javascript 用于unicode的正则表达式,带有标记[[WikiLinks]],javascript,regex,unicode,Javascript,Regex,Unicode,我试图扩展一个JS标记脚本,当文本被双方括号包围时自动添加链接,也就是日语文本的维基链接。现在我有三个问题: 当我找到unicode时,正则表达式结果似乎没有给我$1类型的匹配元素 raw = "I [[carried-out]] the [[plan]]" regex = /\[\[(\w*-*\w*)+\]\]/gm s2 = raw.replace( regex, "<a class='link' href='/links/$1'>$1</a>" ) console

我试图扩展一个JS标记脚本,当文本被双方括号包围时自动添加链接,也就是日语文本的维基链接。现在我有三个问题:

当我找到unicode时,正则表达式结果似乎没有给我$1类型的匹配元素

raw = "I [[carried-out]] the [[plan]]"
regex = /\[\[(\w*-*\w*)+\]\]/gm
s2 = raw.replace( regex, "<a class='link' href='/links/$1'>$1</a>" )
console.log("raw:", raw)
console.log("s2 :", s2)

#> raw: I [[carried-out]] the [[plan]]
#> s2 : I <a class='link' href='/links/carried-out'>carried-out</a> the <a class='link' href='/links/plan'>plan</a>


raw = "I [[ひらがな]] the plan [[edit]]"
regex = /\[\[[\u3040-\u309F]+\]\]/gm
s2 = raw.replace( regex, "<a class='link' href='/links/$1'>$1</a>" )
console.log("raw:", raw)
console.log("s2 :", s2)

#> raw: I [[ひらがな]] the plan [[edit]]
#> s2 : I <a class='link' href='/links/$1'>$1</a> the plan [[edit]]
[]和比赛前后的区别,我不完全清楚:

(\u3040-\u309F)+
[\u3040-\u309F]+
是否存在与unicode相关的已知问题?否则,如果有人能帮我澄清问题,我将不胜感激:


更新:所以我需要对范围使用[],但是如果我这样做,我不会得到匹配,而会生成某种类型的匹配-至少它会删除匹配的文本>我想我知道问题出在哪里我测试了你的案例,发现我成功了

您可能只需要添加一个捕获组,请尝试使用以下方法:

/\[\[([\u3040-\u309F]+)\]\]/gm 

在regex中,stuff Beween是一个捕获组,您可以稍后返回它

m8显示一些应该匹配的示例字符串和不应该匹配的字符串Yes!这起作用了。混合射程和捕获群是我的动力。[-]语法。谁说正则表达式没有诗意?
/\[\[([\u3040-\u309F]+)\]\]/gm