URL に一致する適切な正規表現は何ですか? [重複] 質問する

URL に一致する適切な正規表現は何ですか? [重複] 質問する

現在、URL を検出してデータを解析する入力ボックスがあります。

ということで、現在私は以下を使用しています:

var urlR = /^(?:([A-Za-z]+):)?(\/{0,3})([0-9.\-A-Za-z]+)
           (?::(\d+))?(?:\/([^?#]*))?(?:\?([^#]*))?(?:#(.*))?$/;
var url= content.match(urlR);

問題は、 のような URL を入力するとwww.google.com機能しないことです。 を入力するとhttp://www.google.com機能します。

私は正規表現にあまり詳しくありません。誰か助けてくれませんか?

ベストアンサー1

URL が HTTP/HTTPS で始まることを確認したい場合の正規表現:

https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)

HTTP プロトコルを必要としない場合:

[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)

これを試すにはhttp://regexr.com?37i6s、またはより制限の少ないバージョンhttp://regexr.com/3e6m0

JavaScript 実装の例:

const expression = /[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)/gi;
const regex = new RegExp(expression);
const t = 'www.google.com';

if (t.match(regex)) {
  alert("Successful match");
} else {
  alert("No match");
}

おすすめ記事