-3

この正規表現が機能しない理由は何ですか?

'#((http://|www.)(.*^(youtube)\.(com|org|co.il|net|us|ws|info|tv|me|tk|co.uk).*))#'

YouTube に属さないリンクを見つけたい。

4

2 に答える 2

2

正規表現に次のセグメントがあります。^(youtube)

これは string を否定しないことに注意してくださいyoutube

次のようなテキストの一致を否定するには、否定先読みまたは後読みが必要です。

(?!youtube)

また

(?<!youtube)

正規表現の場合、次のようになります。

#((http://|www.)((?!youtube)[^.]+\.(com|org|co.il|net|us|ws|info|tv|me|tk|co.uk).*))#

ただし、質問内で入力文字列のサンプルを提供する必要があります。

于 2013-04-12T19:43:48.013 に答える
0

私なら逆に行きます

$youtubePattern = '%(https?:\/\/(www\.)?youtube\.([a-z]{2,3}).*)%six';

if (!preg_match($youtubePattern, $subject)) {
   // not youtube, do whatever...
}
于 2013-04-12T19:49:00.203 に答える