2016-11-02 3 views
0

Существует динамическая строка, и я хочу проверить, начинается ли она с «изображения». Для этого я использую ниже фрагмент кода.String.startwith Vs regex

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

Это рекомендуемый способ или я должен использовать regX здесь? Каков наилучший вариант?

+3

Вы спрашиваете, рекомендуется ли использовать метод 'string.startsWith', чтобы проверить, что строка * начинается с * значения? В чем подвох? Почему вы думаете, что метод, который делает именно то, что вы хотите, не рекомендуется? Есть ли что-то особенное в вашем уме? –

+0

Используйте регулярное выражение, когда вы знаете * pattern *, который может быть описан с помощью регулярных выражений. Если у вас есть буквальное значение, вы можете использовать 'startswith' /' indexOf'/'includes'/etc. –

+0

Вас интересует чувствительность к регистру? – BrunoLM

ответ

3

Если вы заботитесь о чувствительности к регистру, то вы можете использовать регулярное выражение

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

Если нет, то вы можете просто использовать startsWith, но сохранить совместимость ума браузера. Вам может понадобиться Polyfill.

Проще просто использовать регулярное выражение, совместимое везде.

+0

Хороший звонок на полипол и без учета регистра –

-1

Я хотел бы использовать .includes() на строке или .indexOf()

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 –