2017-02-04 12 views
1

正規表現を作成しようとしています。URLをオプションの 'www'とプロトコルと一致させる正規表現

いくつかの背景情報:私のウェブサイトのURLのREQUEST_URIに別のURLが含まれているかどうかを確認しようとしています。これらのように:

はしかし、urlは文句を言わない、常に 'HTTP' または 'WWW' を含みます。

URLにマッチする正規表現はたくさんありますが、httpとwwwにオプションのマッチがあります。

マッチするパターンのようなものかもしれない場合、私は思ったんだけど:

^([AZ])(COM | CA |組織|など)(。)

私は多分思いました。もう1つの選択肢は、おそらくドット(。)が付いた文字列にマッチすることでした。 (私のアプリケーションの他のREQUEST_URIには通常ドットは含まれないので)

これは誰にとっても意味がありますか? 私は数週間、私のプロジェクトを妨害してきたことに、本当に助けていただきありがとうございます。 -Tim

答えて

1

あなたが言ったことを本質的に構築し、ドットが入っているものだけでなく、フォワードスラッシュを使って作業するという簡単な方法をお勧めします。すべてをキャプチャし、珍しいURLを見逃すことはありません。だから、何かのように:

  • オプションます。http://またはhttps://
  • 非ドット・オア・スラッシュ文字
  • 一つ以上のそれだけで読み込み

    ^((?:https?:\/\/)?[^./]+(?:\.[^./]+)+(?:\/.*)?)$ 
    

    ドットの後にドットまたはスラッシュ以外の文字が続くもの

  • オプションのスラッシュとその後のもの

最初のグループに全体をキャプチャします。

これは、例えば、一致するであろう:

  • nic.uk
  • nic.uk/
  • http://nic.uk
  • http://nic.uk/
  • https://example.com/test/?a=bcd

Vそれらが有効なURLであることを明らかにすることは別の話です!また、一致します

  • index.php

それは一致しません:

  • directory/index.php

最小限の試合は基本的にsomething.somethingあり、その中に無いスラッシュで、それは少なくとも1文字がそのドットを過ぎて来なければ。だから、そのフォーマットを他のものに使用しないように注意してください。

+0

こんにちはSuperDuperApps。手伝ってくれてどうもありがとう。私はこのアプローチが本当に好きです。あなたはそれをすべて説明してくれてありがとう。私は構文とロジックを理解していると思う。ちょうど私が必要とし、今まで働いているようだ。 – TimFelix

+0

これは素晴らしいTimです、ありがとうございます。それがあなたのために働いていることを聞いてうれしい。 – SuperDuperApps

1

非常

おかげで、あなたは、あなたは、URLの残りの部分と一致するように

^(http://)?(www\.)?

そしてルールを使用して正規表現を起動してみてください。

3

オプションの部分に一致させるには、?Optional Itemsを参照してください。 .+?で疑問符が非貪欲数量詞である、けれども

ドメインと検索用語を、オプションのwww.に合わせキャプチャするたとえば、正規表現は

(www\.)?(.+?)/search=(.+) 

可能性があり、http://www.regular-expressions.info/repeat.htmlを参照してください。

+0

便利なリンクありがとうございますOlaf – TimFelix

1

は、ここに私の2セントです:

$regex = "/http:\/\/mywebsite\.com\/((http:\/\/|www\.)?[a-z]*(\.org|\.co\.uk|\.com).*)/"; 

working exemple

を参照してくださいしかし、私はあなたがよりよく行うことができます確信しています!

希望します。

+0

多くの手助けをしています。例のおかげで。 – TimFelix

1
$re = '/http:\/\/mywebsite\.com\/((?:http:\/\/)?[0-9A-Za-z]+(?:-+[0-9A-Za-z]+)*(?:\.[0-9A-Za-z]+(?:-+[0-9A-Za-z]+)*)+(?:\/.*)?)/'; 

https://regex101.com/r/x6vUvp/1

ハイフンを囲む必要がありますDNS規則に従います。 httpをhttpsに置き換えますか? https URLも許可します。

list of TLDs at Wikipediaによれば、少なくとも1519個あり、ドメインを独自のキャプチャグループにすることができますので、オンラインAPIまたはそれらのすべてをリストしたファイルで確認できます。

+0

ありがとうございます。これは良い解決策のように見えます。私はこれを試してみましょう。 – TimFelix

関連する問題