2011-02-08 16 views
1

有効なURLをテキストフィールドに入力するとすぐに関数(myFunction())をすぐに呼び出すにはどうすればよいでしょうか?私は周りを探索したが、助けになるものは見つけられていない。正規表現を使用するのが最も効果的ですが、私はあらゆる種類のURLを認識できるものが必要です:
http://google.tld、www.google.tld、http://www.google.tld しかし、 "index.php"のようなものはURLとはみなされません。誰もそのような表現を知っていますか?有効なURLがテキストエリアにある場合に関数を呼び出す

+1

タグを入力しないでください彼はタイトル。 – SLaks

+0

* google.com * vs * index.php *は難しいです。前者がURLであることを知る唯一の方法は、正規表現自体に有効なTLDのリストを作成することです。遅く複雑になります。そのようなリストは、新しいTLDが追加されると更新される必要があるため、メンテナンス性が向上します。あなたは 'http://'にする必要があります。 –

+0

@Andy E:うん、私は考えましたが、実際にはそれは重要ではありません。 www.google.com、ht tp://www.google.com、ht tp://google.comを認識している限り、私は満足しています。 – Holoradius

答えて

0

これは「.COM」や「.CH」のようなもので終わるすべてのURLにマッチしますforwardslashエスケープは必要ありませんJavaScriptを使用して

^(http:\/\/)?([\w\.]+\.)((com)|(ch))$ 

(あなたが有効なのTLDのリストを維持する必要があります) TLDはあまり厳しくないかもしれません。ちょうど2〜4文字のもの。 CanSpiceによって異なる長さとのTLDを可能にするアイデアをこの質問へのコメントを考慮

イベントトリガが早すぎる発射可能としてカバーすることは困難です。オン・トリガー・トリガーの時間遅れは、この種の問題を解決する可能性があります。 各ソリューションの正確な要件と長所/短所には重みを付ける必要があります。

example at rubular

+0

ありがとうございます。ただし、.comドメインでのみ動作します。すべてのドメインで作業する必要があります。上記の私のコメントもご覧ください: 「ええと、私は考えましたが、実際にはそれは重要ではありません。www.google.comを認識している限り、ht tp://www.google.com ht tp://google.com、私は満足しています。 " – Holoradius

+0

@Holoradius:最初に「.com」だけに質問しました...私のアップデートがあなたの問題を解決するのに役立つことを願っています –

+0

いいえ、URLは例。私はすべての種類のURLを認識する必要があると述べました – Holoradius

0

非常に多くの異なる可能性があるだろうとあなたは少し苦労することがあります。この1は、技術的にあなたは除外したい場合の

((http)s?(://))?[a-zA-Z0-9]+(\.[a-zA-Z0-9]+)*(/(.*))? 

(ドメイン名の後のパス内の任意の文字、サブドメインの任意の数、などが含まれる)、有効なHTTPまたはHTTPSパスで任意のURLにマッチしますイントラネットは、あなたが使用してTLDを強制することができ、次の

((http)s?(://))?[a-zA-Z0-9\-]+(\.[a-zA-Z0-9]+)*(\.[a-zA-Z0-9]{2,4})+(/(.*))? 
0

^((?:HTTPS | FTP):\/\ /)([\ W \。] +。)([AZ] {? 2,4})$

関連する問題