現在、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");
}