0

リンク (Web、イントラネット、または他の PC の共有フォルダー) を検証するテキストエリアがあります。この正規表現を使用しました: ^(http:\/\/|https:\/\/|ftp:\/\/|www.){1}([0-9A-Za-z]+\.). 私のコードは以下の通りです。

var isUrlValid = false;
var urlRegex2 = new RegExp(
  "^(http:\/\/|https:\/\/|ftp:\/\/|www.){1}([0-9A-Za-z]+\.)");
isUrlValid = urlRegex2.test(linkPathVal);

これは次のようなリンクを検証しません:

http://abcserverName/Home/Index#
https://wiki.abc.in/abc/xyz

しかし、それはhttp://google.comhttp://www.google.comなどの他のものを検証します。私はそれが簡単であることを知っていますが、私は正規表現に精通していません。

ありがとう。

4

1 に答える 1

4

これが正規表現の視覚化です。これから、どこが間違っていたかを簡単に確認できるはずです。

ここに画像の説明を入力

プロトコル文字列の後に英数字とピリオド以外を許可していません。スラッシュ、ハッシュ記号、クエリ文字列などを許可することもできます。

実際、正規表現は、プロトコル文字列 (または www) で始まり、その後にいくつかの英数字、そしてピリオドが続くかどうかをチェックしているようです。あなたの例の最初のピリオドまで一致しますhttps://wiki.abc.in/abc/xyzhttp://abcserverName/Home/Index#ピリオドがなく、正規表現でピリオドが必要なため、一致しません。

于 2013-02-19T04:37:02.617 に答える