@Hancock_888

Как проверить на более точное совпадение?

Подскажите как точнее сравнить строки, не убираю символ точки?
т.е. я хочу что бы при сравнении 'v.y' с 'vry' функция возвращала мне false, т.к. это две разные строки, а проверка на точное совпадение.

function checkMatch(request, item) {
 	var _regex = new RegExp('^' + request, 'i');
 	return _regex.test(item);
 }
 console.log( checkMatch('v.y', 'vry') );
  • Вопрос задан
  • 4954 просмотра
Решения вопроса 1
BuriK666
@BuriK666
Компьютерный псих
Пригласить эксперта
Ответы на вопрос 2
Нужно экранировать точку. А по хорошему и другие спецсимволы, используемые в регулярках. Примерно так:
function escapeRegExp(it){
  return String(it).replace(/([\\\-[\]{}()*+?.,^$|])/g, '\\$1');
}

function checkMatch(request, item) {
  var _regex = new RegExp('^' + escapeRegExp(request), 'i');
  return _regex.test(item);
}
console.log(checkMatch('v.y', 'vry'));    // => false
console.log(checkMatch('vry', 'vryzzz')); // => true
Ответ написан
Комментировать
lexxpavlov
@lexxpavlov
Программист, преподаватель
вам какие строчки сравнивать? Строчки 'v.y' и 'vry' разные, их и правда легко сравнить обычным оператором ==. Если вам нужно, чтобы строки 'v.y' и 'V.y' и 'v.Y' были равны, то есть без учёта регистра, то лучше сравнивать строки, приведённые к нижнему регистру:
function checkMatch(request, item) {
 	return request.toLowerCase() === item.toLowerCase();
 }

А регулярка здесь будет лишней.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы