web-dev-qa-db-ja.com

WebサイトまたはURL検証の正規表現

これは非常に一般的な質問であり、これには非常に多くの回答がありますが、私の問題は異なります。以下のすべての形式のURLを受け入れたいです:

http://www.sample.com
https://www.sample.com
http://www.sample.com/xyz
www.sample.com
www.sample.com/xyz/#/xyz
sample.com

// & much more ...

だからここでのアイデアは、私はユーザーがそこにウェブサイトを入力することを許可し、別のユーザーは保存されたウェブサイトをクリックしてユーザーのウェブサイトに行くことができます。したがって、ここでユーザーに適切なURLの入力を制限するのは良い考えではありません。ユーザーは上記の形式のいずれかを入力できます。ここに私が今使っている正規表現がありますが、それはURLが適切なプロトコルから始まっているかどうかをチェックするだけです:

^(ftp|http|https):\/\/[^ "]+$
10
Dheeraj Agrawal

正規表現^((https?|ftp|smtp):\/\/)?(www.)?[a-z0-9]+\.[a-z]+(\/[a-zA-Z0-9#]+\/?)*$を使用します

これは私が今構築した基本的なものです。グーグル検索でもっと多くのことができます。

ここに

  • ^で始まるべき
  • ((https?| ftp | smtp)://)?これらのプロトコルのいずれかを含む場合と含まない場合があります
  • (www。)? wwwがある場合とない場合があります。
  • [a-z0-9] +(。[a-z] +)URLおよびドメイン、およびサブドメイン(2レベルまでの場合)
  • (/ [a-zA-Z0-9#] + /?)* /?ファイルへのパスを含めることができますが、必須ではありません。最後には/を含めることができます
  • $で終わります
var a=["http://www.sample.com","https://www.sample.com/","https://www.sample.com#","http://www.sample.com/xyz","http://www.sample.com/#xyz","www.sample.com","www.sample.com/xyz/#/xyz","sample.com","sample.com?name=foo","http://www.sample.com#xyz","http://www.sample.c"];
var re=/^((https?|ftp|smtp):\/\/)?(www.)?[a-z0-9]+(\.[a-z]{2,}){1,3}(#?\/?[a-zA-Z0-9#]+)*\/?(\?[a-zA-Z0-9-_]+=[a-zA-Z0-9-%]+&?)?$/;
a.map(x=>console.log(x+" => "+re.test(x)));
24
Sagar V

これを試すことができます:

^((ftp|http|https):\/\/)?(www.)?(?!.*(ftp|http|https|www.))[a-zA-Z0-9_-]+(\.[a-zA-Z]+)+((\/)[\w#]+)*(\/\w+\?[a-zA-Z0-9_]+=\w+(&[a-zA-Z0-9_]+=\w+)*)?$

更新されたデモ

const regex = /^((ftp|http|https):\/\/)?(www.)?(?!.*(ftp|http|https|www.))[a-zA-Z0-9_-]+(\.[a-zA-Z]+)+((\/)[\w#]+)*(\/\w+\?[a-zA-Z0-9_]+=\w+(&[a-zA-Z0-9_]+=\w+)*)?$/gm;
const str = `http://www.sample.com
https://www.sample.com
http://www.sample.com/xyz
www.sample.com
www.sample.com/xyz/#/xyz
sample.com
www.sample.com
mofiz.com
kolim.com
www.murikhao.www.sample.com
http://murihao.www.sample.com
http://www.sample.com/xyz?abc=dkd&p=q&c=2
www.sample.gov.bd
www.sample.com.en
www.sample.vu


`;
let m;

while ((m = regex.exec(str)) !== null) {

    if (m.index === regex.lastIndex) {
        regex.lastIndex++;
    }
    console.log("matched :"+m[0]);
}
5
Rizwan M.Tuman