В чём разница?
Добрый день. Есть два похожих кода:
1 $(document).on('change keyup input click oninput', 'input', function() { let pattern = $(this).data( 'pattern' ); if ( pattern !== '' && pattern !== 'undefined' ) { this.value = this.value.replace( pattern, '' ); } }); 2 $(document).on('change keyup input click oninput', 'input', function() { let pattern = $(this).data( 'pattern' ); if ( pattern !== '' && pattern !== 'undefined' ) { this.value = this.value.replace( /[^а-яА-Яa-zA-Z\s]/g, '' ); } }); Во втором случае выполняется валидация, а в первом нет. В обоих случаях pattern в console.log показывает /[^а-яА-Яa-zA-Z\s]/g. В чём причина? |
Янковиц,
в одном случае pattern String(последовательность символов) в другом RegExp(шаблон для поиска). |
И как тогда String привести к RegExp?
|
RegExp from pattern
Янковиц,
$(document).on('change keyup input click oninput', 'input', function() { let pattern = $(this).data( 'pattern' ); if ( pattern !== '' && pattern !== 'undefined' ) { let [_, pattern , flags] = pattern.split('\/'); this.value = this.value.replace( new RegExp(pattern , flags), '' ); } }); |
В первом случае pattern, это строка, чтобы она стала шаблоном рег. выражения нужно
let pattern = eval($(this).data( 'pattern' )); А лучше держать в атрибуте сам шаблон, а в обработчике let pattern = new RegExp($(this).data( 'pattern' ), 'g'); |
Спасибо большое
|
Ещё один вопрос. В шаблоне прописаны допустимые буквы: а-яА-Яa-zA-Z, но не пропускает буквы öçğ и другие
Как прописать эту ситуацию? |
Янковиц,
:-? добавить нужное |
Я заведомо не знаю, какие буквы ещё могут использоваться
|
Янковиц,
пропишите ненужные символы[-_=+\d] вместо [^a-z] |
Часовой пояс GMT +3, время: 05:50. |