2011-01-10 3 views
122

文字列の先頭を確認する正規表現を設定しようとしていますが、http://またはhttps://のいずれかが含まれていると一致するはずです。文字列がhttp://またはhttps://で始まるかどうかをテストするRegex

どうすればいいですか? []のご利用が間違っている

^[(http)(https)]:// 
+5

あなたは、文字列のちょうど開始をチェックしている場合は後に他のすべてと一致している、それはおそらくです文字列の最初の数文字と探しているパターンとの比較を直ちに行うのが速くなります。 – templatetypedef

+2

あなたは '[]'で*文字グループ*を作成しています。 '('、 ')'、 'h'、' t'、 't'、' p'または 's'のいずれかであるmach ** ** **の文字になります。私。それは 's://'にマッチしますが、 'ht://'や 'x://'にはマッチしません。 –

+2

@templatetypedef:私は早すぎる最適化を感じると思います。 – cdhowie

答えて

232

から[]文字クラスを示し、したがって、唯一のこれまでの1つの文字にマッチすることに注意してください:私は働いていない次のことをしようとしています。表現[(http)(https)]は "(http)、またはs一致する。" に変換します(重複した文字は無視されます。)

はこれを試してみてください:

^(http|https):// 
+0

PHP入力文字列として$ regex = '/ (https?:\/\ /) '; –

+5

スティーブ、私はあなたが最後を見逃したと思う:$ regex = '/ ^(https?:\/\ /)/'; – Axi

+3

ちょうど場合によっては、いくつかのナットが誤ってhttp、$ regex = '/ ^(https?:\/\ /)/ i'を大文字にします。 – jeffkee

21
^https?:// 

あなたはエスケープする必要がある場合があります:あなたは本当に交代を使用したい場合は

^https?:// 

は、代わりにこの構文を使用しますコンテキストに応じてスラッシュをスラッシュします。

12

これは、小文字を区別しない

^(http|https):// 
21

ケースを動作するはずです:

var re = new RegExp("^(http|https)://", "i"); 
var str = "My String"; 
var match = re.test(str); 
2

^https?:\/\/(.*)(.*)https://

関連する問題