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]"

壊れたリンクが 1 つ生成されます。

"<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 に答える