1

私は RegExp にかなり慣れていないので、文字列内の URL を検出するために RegExp を実装しようとしています。私が使用したい唯一の正規表現はこれです (あなた自身のものを提供しないでください):

/(((http|ftp|https)://)?[\w-]+(\.[\w-]+)+([\w.,@?^=%&:/~+#-]*[\w@?^=%&/~+#-])?)/g

そして、すべての一致をこれに置き換えます:

<a href="$1">$1</a>

その例でhttp://gskinner.com/RegExr/にアクセスして置換で使用すると、問題なく動作することがわかりますが、JavaScript でこれを使用して機能するソリューションを構築することは不可能です。

var text = "hi, demo link http://stackoverflow.com is a great website"
//regexp magic


//expected result:
textWithLink ="hi, demo link <a href="http://stackoverflow.com">http://stackoverflow.com</a> is a great website"
4

3 に答える 3

2
var str = 'hi, demo link http://stackoverflow.com is a great website',
    regex = /(((http|ftp|https):\/\/)?[\w-]+(\.[\w-]+)+([\w.,@?^=%&amp;:\/~+#-]*[\w@?^=%&amp;\/~+#-])?)/g;
str.replace(regex, '<a href="$1">$1</a>');

注:それはあなたの正確な正規表現です。スラッシュをエスケープしただけです。

于 2013-02-26T15:31:55.783 に答える
1

あなたはこれを行うことができます

var ok = /(((http|ftp|https):\/\/)?[\w-]+(\.[\w-]+)+([\w.,@?^=%&amp;:/~+#-]*[\w@?^=%&amp;/~+#-])?)/.test(str);

文字列が URL かどうかをテストします。

文字列内の URL を検索する場合は、次を使用します

var matches = str.match(/(((http|ftp|https):\/\/)?[\w-]+(\.[\w-]+)+([\w.,@?^=%&amp;:/~+#-]*[\w@?^=%&amp;/~+#-])?)/g);

これは正規表現リテラルであり、. をエスケープする必要があることに注意してください/

于 2013-02-26T15:22:38.923 に答える
1

指定した RegExp リテラルは無効です:

/(((http|ftp|https)://)?[\w-]+(\.[\w-]+)+([\w.,@?^=%&amp;:/~+#-]*[\w@?^=%&amp;/~+#-])?)/g
^                   ^^
Start               |\__ Error
                    |
                   End

アプリケーションが区切り文字を自動的に削除し、誤ってエラーを修正するため、提供したリンクで機能します。

于 2013-02-26T15:29:49.263 に答える