0

ユーザーが URL の有無にかかわらず入力する状況がありますhttp(s)://。ある場合はそれを取得したいのですが、それ以外の場合はhttp://自分で追加します。以下の正規表現パターンがあります。

正規表現:\[url\](?:https?\:\/\/)?(.*?)\[\/url\]置換:<a href="$1">$1</a>

これを作るのは

[url]http://blog.sanspace.in[/url]
[url]https://blog.sanspace.in[/url]
[url]blog.sanspace.in[/url]
[url]blog.sanspace.in/scraperwiki[/url]
[url]www.sanspace.in[/url]

これに

<a href="http://blog.sanspace.in">http://blog.sanspace.in</a>
<a href="http://blog.sanspace.in">http://blog.sanspace.in</a>
<a href="http://blog.sanspace.in">http://blog.sanspace.in</a>
<a href="http://blog.sanspace.in/scraperwiki">http://blog.sanspace.in/scraperwiki</a>
<a href="http://www.sanspace.in">http://www.sanspace.in</a>

今、私がしたいのは、このようにすることです。(利用可能な場合は http(s) を使用します。それ以外の場合は http)

<a href="http://blog.sanspace.in">http://blog.sanspace.in</a>
<a href="https://blog.sanspace.in">https://blog.sanspace.in</a>
<a href="http://blog.sanspace.in">http://blog.sanspace.in</a>
<a href="http://blog.sanspace.in/scraperwiki">http://blog.sanspace.in/scraperwiki</a>
<a href="http://www.sanspace.in">http://www.sanspace.in</a>

をグループとして追加してみhttp(s)ました。

正規表現:\[url\](https?\:\/\/)?(.*?)\[\/url\]置換:<a href="$1$2">$1$2</a>

その場合、交換順序$1$2は異なります。ユーザーが追加した場合はそれ以外にhttpなり$1、URL は になり$1ます。

<a href="http://blog.sanspace.in">http://blog.sanspace.in</a>
<a href="https://blog.sanspace.in">https://blog.sanspace.in</a>
<a href="blog.sanspace.in">blog.sanspace.in</a>
<a href="blog.sanspace.in/scraperwiki">blog.sanspace.in/scraperwiki</a>
<a href="www.sanspace.in">www.sanspace.in</a>

最後の 3 つの URL に注意してください。ここで追加するhttp必要がありますが、ユーザーが追加されていないことがわかっている場合のみですhttp。目標を達成する方法がわかりません。

ここでこの問題をテストしています。http://regexr.com?3711a

4

1 に答える 1

2

次の正規表現を試してください:

マッチ : \[url\](?:http(s)?\:\/\/)?(.*?)\[\/url\]

交換 : <a href="http$1://$2">http$1://$2</a>

正規表現のデモ

元の文字列に存在しない場合は挿入しても構わないと思っているのでhttp://、ここでのアイデアは、存在してもキャプチャしません。s代わりに、セキュア http を示すオプションのみを にキャプチャし$1ます。

于 2013-11-01T14:51:57.270 に答える