0

JavaScriptを使用してリンクをクリック可能にする必要があり、最速の方法は言うまでもなく、正規表現が最も簡単だと思いました。すべてのリンクをクリック可能にして、既存のクリック可能なリンクを書き換えないようにしたいのです。

Example: 
Here is a link to visit http://www.example.com/page Please take a look <a href="http://www.example.com/page">here</a>.

Becomes: Here is a link to visit <a href="http://www.example.com/page">http://www.example.com/page</a> Please take a look <a href="http://www.example.com/page">here</a>.

Another example: Here is a link to visit http://www.example.com/page Please take a look here: <a href="http://www.example.com/page">http://www.example.com/page</a>

Becomes: Here is a link to visit <a href="http://www.example.com/page">http://www.example.com/page</a> Please take a look here: <a href="http://www.example.com/page">http://www.example.com/page</a>

And finally: <p id="demo">http://example.com/
<br><a href="http://example.com/123">http://example.com/123</a>
<br><a href="http://Google.ca/">http://Google.ca/</a></p>
4

2 に答える 2

0

これでうまくいくはずです:

var pattern = new RegExp("[^\"'](http://[^ ]*)","g");
var newContent = yourString.replace(pattern," <a href=\"$1\">$1</a>");

コメントの世話をするために:

var pattern = new RegExp("([^\"'])(http://[^ ]*)","g");
var newContent = yourString.replace(pattern,"$1<a href=\"$2\">$2</a>");

コメントの後にもう1つ編集します。前の編集では、リンクが最初にないことを前提としています。

var pattern = new RegExp("([^\"']||^)(http://[^ ]*)","g");
var newContent = yourString.replace(pattern,"$1<a href=\"$2\">$2</a>");

おそらくすでにパターンを見たことがあるでしょう。正規表現では、()内にあるものが戻りパラメーター$1と$2に割り当てられます。この場合、文字列を再構築するために、replaceステートメントでwitchが使用されます。ここでのパターンはおそらく拡張する必要があります。さらに、パターンによってキャッチされない他の例外に遭遇すると、たとえば、リンクを()内に配置しても、望ましい結果が得られません。正規表現で遊ぶのに最適なサイトはregextester.comです。

于 2012-09-15T21:35:00.087 に答える
0
var text = [
        "http://www.example.com/page address at the begining then a well formated a tag take a look <a href='http://www.example.com/page'>here</a>.",
        " text in front http://www.example.com/page Please take a look <a href='http://www.example.com/page'>here</a>.",
        "  http less with get vars www.example.com/page?foo=bar Please take a look  <a href='http://www.example.com/page'>here</a>.",
        '<p>http://example.com/<br /><a href="http://example.com/123">http://example.com/123</a><br /><a href="http://Google.ca/">http://Google.ca/</a></p>'
    ] ,
    reg = /([\s>]|^)((?:http:\/\/)?(?:[a-z][\w-]+)+(?:\.[\w-]+)*(?:\.[a-z]{2,3})(?:[^ <]+))(?=[\s<]|$)/g,
    output = '';
    for(var key in text){
        $('body').append(
        '<div>'+
          text[key]
                .replace(reg, '$1<a href="$2">$2</a>')
                .replace(/(href=['"])(?!http:\/\/)/g, '$1http://')+
        '</pre>'
        );
    }

ブラウザ/Firebug コンソールでテストできます。

最も信頼できる極端な区切り文字/マーカーを見つけるには、さらにテストを行う必要があります

于 2012-09-16T10:46:34.197 に答える