0

在 ECMAScript 中,这是我正在使用的正则表达式:

replace(/\[(.+)\s+->\s+([^\]]+)]/g, '<a class=adl_btnlnk href="$2">$1</a>');

这对于以下字符串很好:

"[INNER\"',';!@#$%^&*gobbeldygook ->    -> -> http://li.nk?u=r&l]"

...它正是我需要的。但是当我有什么时候:

"[INNER\"',';!@#$%^&*gobbeldygook ->    -> -> http://li.nk?u=r&l] laksjfalksdjf98723&*(*&(*@&#$ [foo -> http://li.nk]"

它导致一个断开的链接:

"<a class=adl_btnlnk href="http://li.nk">INNER"',';!@#$%^&*gobbeldygook ->    -> -> http://li.nk?u=r&l] laksjfalksdjf98723&*(*&(*@&#$ [foo</a>"

我怎样才能使它成为:

"<a class=adl_btnlnk href="http://li.nk?u=r&l">INNER"',';!@#$%^&*gobbeldygook ->    -></a> laksjfalksdjf98723&*(*&(*@&#$ <a class=adl_btnlink href="http://li.nk">foo</a>"
4

1 回答 1

1

您可以+通过附加一个?. 但是你必须稍微改变你的正则表达式,以便尽可能多地排除]第一组的字符。此外,最后一组不应包含箭头:

/\[([^\]]+?)\s+->\s+([^->\]]+?)]/g
于 2012-08-17T22:07:31.170 回答