2017-01-03 12 views
1

私はページのURLパターンを特定しようとしています。そのために私は以下に続くが、特定のURLパターンを特定するPHPの正規表現

問題になってしまっている - > PHPの正規表現を使用:これは、以下の

example.com 
www.example.com 
http://example.com 
http://www.example.com  
https://example.com 
https://www.example.com 

しかし残念ながら、それを同様にURLのほとんどすべての種類を特定している

~((https?://)?([-\w]+\.[-\w\.]+)+\w(:\d+)?(/([-\w/_\.]*(\?\S+)?)?)*)~i 

10進数の値、価格の値、電話の番号、IPアドレスをURL形式と見なしています(以前は考えていないかもしれません)。だから私は、これは

Deciaml値(1.11)

などの数値を除外することで、URL識別子を固定している使用

/^[0-9]+(\.[0-9]{1,})+\S+\w?$/ 

を除外するために具体的な数値大切なパターンを見つけるために、以下に使用されている。この問題を解決するにはIPアドレス(123.123.123.123)

価格値($ 11.11)

は今、新たな問題「略語も考慮されていますだから、URLの「

W.H.O(任意のアルファベットの場合)

として編、どのように私は、上記の問題の例を排除するPHPの正規表現を識別するURLを持つことができますか?

または

は、私は上記の例のような略語を含む単一のアルファベット値を識別するために、PHPの正規表現を持つことができますか?

おかげ

+0

偽のURLへのリンクは投稿しないでください。これはコードなので、それを '{}'ツールバーボタンのようにフォーマットする必要があります: –

+0

私に誤字を犯させてください:) –

+0

[''〜\ b(?:[AZ]) ( - ) - + d(+)+( - )+ d(+ ?:: \ d +)?(/([ - \ w/_])*(?:\?\ S +)?))))*)\ b〜 ''](https://regex101.com/r/ iuozYk/2) –

答えて

0

あなたは否定先読みにこれらの除外を入れて、

$re = '~(?x)\b     # Word boundary 
    (?!       # Exclusion list 
    [A-Z](?:\.[A-Z])+\b   # No upper and 1+ sequences of . + an upper 
    |       # or 
    \d+(?:\.\d+)+\S+\b   # digits + 1+ dot and digits and 1+ non-whitespaces 
    )  
    (?:https?://)?    # Optional http/https protocol part 
    (?:[-\w]+\.[-\w.]+)+   # 1+ sequences of 1+ - or word chars, then . and 1+ -, ., or word chars 
    \w(?::\d+)?     # word char and 1 optional sequence of : and 1+ digits 
    (?:/(?:[-\w/.]*(?:\?\S+)?)?)* # 0+ sequences of /, 0+ -, word, /, . symbols, then 1 optional sequence of ? and 1+ non-whitespaces 
    \b~';       # word boundary 
$str = 'example.com www.example.com http://example.com http://www.example.com  https://example.com https://www.example.com Deciaml Values (1.11) IP Address (123.123.123.123) W.H.O Price values ($11.11)'; 
preg_match_all($re, $str, $matches); 
print_r($matches[0]); 

を使用することができ、オンラインPHP demoを参照してください、とregex demo here

+1

それは動作します!ありがとう@WiktorStribiżew –

関連する問題