在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>"
答案 0 :(得分:1)
您可以通过附加+
来尽量减少?
量词。但是你必须稍微改变你的正则表达式,以便尽可能多地排除第一组的]
个字符。此外,最后一组不应包括箭头:
/\[([^\]]+?)\s+->\s+([^->\]]+?)]/g