2

文字列内の正規表現に一致する URL の色を変更しようとしています。

これが私のコードです:

$(document).ready(function(){

    //Change the color of words containing the @ sing
    $("#modal_0 section p").html(function(_, html){
        return html.replace(/(\@\w+)/g, '<span class="change_color">$1</span>');
    }); //Works fine

    //Change the color of words containing URLs (www.domain.com, domain.com, etc.)
    $("#modal_0 section p").html(function(_, html){
        return html.replace(/^(?=www\.)?[A-Za-z0-9_-]+\.+[A-Za-z0-9.\/%&=\?_:;-]+$/, '<span class="change_color">$1</span>');
    }); //Doesn't work
})
;

@ sing を含む単語をキャッチしようとすると、関数は正常に動作します。そして、正規表現に問題はありません。

これが フィドルです。

4

2 に答える 2

2

これらのアンカーを削除し、キャプチャ グループを追加すると、機能します。

/(?=www\.)?([A-Za-z0-9_-]+\.+[A-Za-z0-9.\/%&=\?_:;-]+)/

デモ: http://jsfiddle.net/JssZm/1/

于 2013-06-03T03:03:07.193 に答える
1

あなたの正規表現は適切ではありませんでし^た.最初と$最後にpありましたsomedomain.com.

また、キャプチャ グループを追加しませんでした。

//Change the color of words containing urls (www.domain.com,domain.com,etc)
$("#modal_0 section p").html(function(_, html){
    return html.replace(/(?=www\.)?([A-Za-z0-9_-]+\.+[A-Za-z0-9.\/%&=\?_:;-]+)/, '<span class="change_color">$1</span>');   
});

デモ:フィドル

于 2013-06-03T03:02:55.360 に答える