2016-11-02 4 views
0

動的文字列があり、「image」で始まるかどうかを検証したいと思います。そのために私は以下のコードスニペットを使用しています。String.startwithVs regex

var isValidImage = inputType.startsWith('image'); 

これは推奨される方法ですか、ここでregXを使用する必要がありますか?最良の選択肢は何ですか?

+3

'string.startsWith'メソッドが*文字列が*値で始まるかどうかを確認することをお勧めしますか?キャッチは何ですか?あなたが望むものを実行する方法が推奨されないのはなぜだと思いますか?あなたの心には何か特別なものがありますか? –

+0

正規表現で記述できる*パターン*を知っている場合は正規表現を使用してください。リテラル値を持っているなら、 'startswith' /' indexOf'/'includes'/etcを使うことができます。 –

+0

大文字と小文字は区別されますか? – BrunoLM

答えて

3

あなたは大文字と小文字の区別を気にしている場合、あなただけのstartsWithを使用していますが、心のブラウザの互換性を保つことができないならば、あなたは正規表現

var isValidImage = /^image/i.test(inputType); 

を使用することができます。 Polyfillが必要な場合があります。

どこでも互換性のある正規表現を使用する方が簡単です。

+0

polyfillでの通話が良好で、大文字と小文字を区別しません –

-1

私は、文字列または.indexOf上.INCLUDES()()

inputType.indexOf('image') === 0

または

inputType.includes('image')

か、あなたが本当に正規表現を使用する場合を使用したい:

/^image.*/.test(inputType)

-1

Stringオブジェクトのパターンマッチングメソッドの多くは、実際に暗黙のRegExオブジェクトをバックグラウンドで使用しています。私は.startsWith()がそうしているかどうかは分かりませんが、いずれにしても行けるときは、文字列を渡すことができます(静的な値であれば、パターンではなく)。これは、明示的なRegExインスタンスではなく、すべて最適化されており、使用するには完璧です。

+2

それについての情報源? –

+0

彼らはしますか?簡単な検索を行うためにRegExpオブジェクトを構築するとは考えにくいです。私はこれの証拠を見るのに不思議に思います。 –

+0

@ThomasAyoubここでString.match()の働きを説明します。他の人も同様です:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/match –