0

URLを検証するための正規表現を示すトピックがたくさんあることを私は知っています。また、そこにFILTER_VALIDATE_URL関数があります、私もそれを知っています。

正規表現の何が問題なのかを知り、何が問題なのかを理解したいと思います。

私のRegularExpressionは、URLの前にあるhttp://またはhttps://と一致する必要があります。その後は、1つまたは複数の任意の文字にすることができます。ドットで終わり、その後に2〜5文字の文字列azが必要です。

        $s = preg_match('^(http|https)://.+(\.[a-z]{2,5})$', $url);

http://regexpal.com/でこのRegularExpressionを試しました。正しく一致しますが、preg_match呼び出しで常にfalseが返されます。誰かがこの正規表現の何が間違っているのか説明できますか?

どうもありがとうございます

4

1 に答える 1

3

PHPでは、正規表現の構文で区切り文字を使用する必要があります。区切り文字には、英数字、円記号、空白以外の任意の文字を使用できます。ほとんどの人は区切り文字として使用しますが、これはURLに表示されるため、エスケープを回避する/など、別の文字を使用できます。#

'#^(http|https)://.+(\.[a-z]{2,5})$#'

補足:(http|https)括弧で囲まれているため、キャプチャされます。これは実際には必要ありませんが、単に書く方が簡単です。https?ここで、?s式のオプション文字になります。

于 2013-03-16T14:07:32.807 に答える