2016-05-02 12 views
1

括弧内のその多分このようなカッコ内:URLと一致するように、彼らはそのようなカッコで囲んで示していないときは、some textもURLする方法をどのようにURLを一致させるためではなく、私はURLを持っている

[[!;;;;http://example.com/foo]some text] 

。 I  は、すべてのURLをその形式に置き換える必要があります。

これまでのところ、私はURLが一致する正規表現があります。

var url_re = /(\bhttps?:\/\/(?:(?:(?!&[^;]+;)|(?=&amp;))[^\s"'<>\]\[)])+\b)/gi; 

例入力:

http://example.com/foo [[!;;;;http://example.com/foo]some text] http://example.com/foo 

出力:

[[!;;;;http://example.com/foo]http://example.com/foo] [[!;;;;http://example.com/foo]some text] [[!;;;;http://example.com/foo]http://example.com/foo] 
+0

[OK]をクリックすると、角かっこ以外のURLをタグ付きリンクに置き換えることができます。ただし、URLはネストされたバランスの取れた角括弧内に存在する可能性があります。 –

+0

@WiktorStribiżewはい、質問の例を入力と出力で更新しました。 – jcubic

+0

'some text'は' ['または'] 'を含むことができますか?そうでない場合は、['\ b" https?:\/\ /(?:(?:(?! &[^;);)|(?= &) )+] \ b(?![^ [\]] *]) '](https://regex101.com/r/oM7kR7/1)に置き換え、' [[!;; $ 1] $ 1] 'で置き換えてください。 –

答えて

1

をあなたがマッチングを回避します(?![^[\]]*])否定先読みを追加することができます終了前のパターン]が先行していない時間以外[または]

\b(https?:\/\/(?:(?:(?!&[^;]+;)|(?=&amp;))[^\s"'<>\][)])+)\b(?![^[\]]*]) 

[[!;;;;$1]$1]と交換してください。 regex demo

別のオプションが一致してキャプチャ[...[...]...]内のすべてをして、適切に各キャプチャを処理するためにString.replace()内でコールバックを使用することですが、上記を参照してください「クリーン」とより直接的です。

関連する問題