元ネタ RFC3986定義の厳密なHTTP URIの正規表現 何をしたか PHP向けに以下の編集を行いました。 適当な文字数毎に分割した文字列リテラルに (Atomなどのエディタは一行が長すぎると重くなる) デリミタ ` を付加 i 修飾子を付加 グループに関して、全てキャプチャ無しに 繰り返しパターンに関して、全てバックトラックを行わないよう独占的に aaahttp://などにはマッチしないように,先頭に単語境界の判定を付加 コード 正規表現 $regex = '`\bhttps?+:(?://(?:(?:[-.0-9_a-z~]|%[0-9a-f][0-9a-f]' . '|[!$&-,:;=])*+@)?+(?:\[(?:(?:[0-9a-f]{1,4}:){6}(?:' . '[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:\d|[1-9]\d|1\d{2}|2' .
