1

私は現在このコードを使用してURLを検証していますが、ページから強調表示されたテキストを検証しているため、JavaScript関数では非常に低速です。

これが私が使用しているコードです:

    var urlregex = new RegExp(
        "^(http|https|ftp)\://([a-zA-Z0-9\.\-]+(\:[a-zA-Z0-9\.&%\$\-]+)*@)*((25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])|([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(\:[0-9]+)*(/($|[a-zA-Z0-9\.\,\?\'\\\+&%\$#\=~_\-]+))*$");
return urlregex.test($.trim(url));

javascriptを使用して有効なリンクをチェックするために使用できる他の方法があることを願っています。

ありがとう。

4

2 に答える 2

1

使用するのはかなり遅いexpr = new RegExp("pattern")ですexpr = /pattern/g。また、関数が呼び出されるたびにコンパイルせずに再利用できるように、関数定義の外部で式をコンパイルすることを確認する必要があります(ループ内にある場合はさらに重要です)。次のことを試してください。

var expression = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/i;
function testUrl(url){
    return expression.test($.trim(url));
}

javascriptの正規表現のパフォーマンスについて詳しくは、http: //corporate.tuenti.com/en/dev/blog/tips-and-tricks-with-regular-expressions-in-jsをご覧ください。

于 2012-09-20T11:49:32.203 に答える
-1

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

var url1 = /(^|<|\s)(www\..+?\..+?)(\s|>|$)/g;
var url2 = /(^|<|\s)(((https?|ftp):\/\/|mailto:).+?)(\s|>|$)/g;
于 2012-09-20T11:41:39.637 に答える