のために、私は、この正規表現とその作業に近いが、その中に一つだけ多くの問題を働いた、それは、複数の期間で任意の単語に一致するPHP正規表現がURL
例えば(。):STUF ...(マッチしました)
正規表現で「ブラケットの1セットあたり1つの期間のみ許可」に期間を制限するにはどうすればよいですか?
'#((\w+://)?(\w+\.)([a-z0-9\-/.?=_&%])+)#i'
のために、私は、この正規表現とその作業に近いが、その中に一つだけ多くの問題を働いた、それは、複数の期間で任意の単語に一致するPHP正規表現がURL
例えば(。):STUF ...(マッチしました)
正規表現で「ブラケットの1セットあたり1つの期間のみ許可」に期間を制限するにはどうすればよいですか?
'#((\w+://)?(\w+\.)([a-z0-9\-/.?=_&%])+)#i'
これは動作するはずです:
[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}
問題を使用している正規表現では、あなたの期間を含む文字クラスに貪欲バージョン「+」を使用していることです。私がここに投稿した正規表現は、その名前の中の1つのperdiodだけをチェックします。
このパターンは、google.com、www.google.com、任意の数のサブドメインと正常に一致します。
注:は最近、間もなくいずれかの最上位ドメイン(たとえば.com、.orgなどの代わりにすぐに許可されるものなど)を許可すると発表したため、最後の部分を調整する必要がありますTLDはまもなく任意の長さになるだろうから、正規表現の "{2,4}"になる。
'#((\w+://)?(\w+)(\.[a-z0-9\-/?=_&%]+)+)#i'
これは、各期間の後に非期間-文字が必要です。
既に「博物館」で欠落しています。 –
ありがとうございましたノーマルは、(tld)私も同様に避けようとしているものです。 – pakito
ああ、博物館がすでに使用されていたことはわかりませんでした。さて、あなたは本質的にany.combination.of.valid.characters.delimeted.by.periods.without.spaces.not.ending.in.a.punctuationを探しているので、もう少し難しくなります。 mark:S偽陽性の可能性の増加から挑戦します。私はあなたがそれを試して何が起こるか見る必要があるだろうと思う。 – jefflunt
さて、なぜ使用しない場合でもparse_url()?
\。{1}は正常に動作しますが、私はPHPが分かりません:-) –
テキスト内のリンクを置き換えるpreg_matchです。だから、おそらくフィルターは助けにならなかっただろうか 私は{1}を試しましたが、入力するとエラーが発生します: '#((\ w +://)?(\ w + 1}?= _&%]))+)#i ' – pakito
URLについての質問をするときにRFCを参照しているパキト?プロトコルも知っていると良いでしょう。これは具体的にはhttpとhttpsのプロトコルですか? – hakre