フォームフィールドでのURL検証


7

以下のスクリプトを追加して、フォームフィールドのURLを検証します。有効なURLが表示されます.magentoのデフォルトクラスvalidate-urlを使用しても、エラーは表示されません。

$url=https://www.google.co

if(!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$url))
{
  echo "invalid url";
}
else
{
   echo "valid url";
}

この問題を修正する方法。


あなたがここで達成しようとしていることについて、私は少し混乱しています。URLは私が確認できるものから有効であるため、validation.jsと正規表現の両方が有効であることを返します。解決しようとしている問題は何ですか?
David Manners、

これはwww.google.coの無効なURLです。しかし、それは有効なURLを示しています。上記の方法に可能性はありますか?
saravanavelu 2014年

回答:


3

あなたが投稿した正規表現は、あなたが思っていることを実際に行っていません。これを次のような正規表現ツールに投稿すると、

  1. http://www.regexr.com/
  2. http://regex101.com/

次に、あなたの正規表現をデバッグすることができますが、基本的に何を持っていることのいずれかの一致であるhttp://か、www.そうではあなたのケースでwww.google.coは完全に有効です。

Magentoにjs/prototype/validation.jsは2つの異なるURL検証オプションがあります。

  1. validate-url-http:// https://またはftp://が必要です
  2. validate-clean-url-プロトコルなしで動作します、

したがって、プロトコルで正規表現を機能させるには、以下を使用できます。

\b(?:(?:https?|ftp):\/\/(?:www\.)?)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]

ただし、これも一致http://aしないことに注意してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.