Split a string by whitespace, keeping quoted segments

Разделить строку по пробелам, с возможностью использовать пробелы в кавычках.

	// вместо простого сплита
	'58 "5 A"'.split(/\s+/);
	// используем матч
	'58 "5 A"'.match(/(?:[^\s"]+|"[^"]*")+/g);
Живой пример использования в фильтре.

	$('#lt').on('keyup paste input', '.filter input', function() {
	    var vals = $(this).val().trim().match(/(?:[^\s"]+|"[^"]*")+/g) || [];
	    // поиск по кол-ву вхождений набора входных значений (разделены пробелом, пробел тоже можно передать в поиск, пример, 100 "5 А")
	    var checkAll = function(val) {
		var finded = 0;
		$.each(vals, function(i,o){ finded += (val.toUpperCase().indexOf(o.replace(/\"/g,'').toUpperCase()) > -1 ? 1 : 0); });
		return vals.length != finded;
	    };
	    $(this).closest('.row').find('.prop-val,.mod').removeClass('hidden').filter(function(){ return vals.length != 0 && checkAll($(this).text()); }).addClass('hidden');
	});

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *