#javascript #vue.js
#язык JavaScript #vue.js
Вопрос:
Я пытаюсь сделать специальный ввод, который проверит маску по шаблону этой маски на правильность введенных символов. Я подумал, что мне нужно создать массив с регулярными выражениями для каждого символа шаблона. Шаблон должен включать символы латиницы и кириллицы, пробелы, тире и подчеркивания. Сейчас я пытаюсь проверить, работает ли проверка, но в мой ввод может попасть все, что угодно. Как правильно убедиться, что он проверяет шаблон и маскирует, какие символы должны быть включены во входные данные?
export default { data: ()=gt;({ plate_pattern:{ app11le: "AAA11AA", cherr11y:"AAAA11A", a111pricot: "A111AAAAA" }, pattern_key: this.plate_pattern, handler: "", mask: [{app11le:' ___ __ __'}, {cherr11y: '____ ___'}, {a111pricot: '_ _______'}], placeholder: '_', start: 0, isRight: true, }), methods:{ isNumber(checkIfNumber){ return !isNaN(checkIfNumber) amp;amp; parseInt( checkIfNumber) == checkIfNumber() amp;amp; !isNaN(parseInt(checkIfNumber, 10)) }, isLetter(checkIfLetter){ return isNaN(checkIfLetter) amp;amp; checkIfLetter.toLowerCase() != checkIfLetter.toLowerCase() amp;amp; checkIfLetter.length == 1 }, isRightSymbol(checkIfSymbolInArray){ let arraySymbolExist = [ {name: 'app11le', regex: /^[wа-я][wа-я][wа-я][0-9_][wа-я][wа-я]$/, check: true}, {name:'cherr11y', regex:/^[wа-я][wа-я][wа-я][wа-я][wа-я][0-9_][wа-я]$/, check: true }, {name:'a111pricot', regex: /^[wа-я][0-9_][0-9_][0-9_][wа-я][wа-я][wа-я][wа-я][wа-я][wа-я]$/ } ] if(arraySymbolExist.length){ for (let i = 0; i lt; arraySymbolExist.length; i ) { return !checkIfSymbolInArray.match(arraySymbolExist[i]) } } }, inputFruitName(fruitsName){ if(this.isNumber(fruitsName.key) || this.isLetter(fruitsName.key) amp;amp; this.isRightSymbol(fruitsName.key)){ this.isRight = false; } },
Комментарии:
1. почему в вашей
isRightSymbol
функции нет логики зацикливания? вы пытаетесьmatch
использовать массив, что должно привести к ошибке метода, не определенной. Пожалуйста, проверьте свой журнал консоли, если это правда.2. привет @SamridhTuladhar Я отредактировал свой код, но я очень новичок в Vue.js и сам JS, потому что я из мира мобильных разработчиков, так что не могли бы вы проверить и подсказать мне, как мне разместить for-loop, пожалуйста? Я пытался сделать это вне функции isRightSymbol, но она не могла видеть массив регулярных выражений, поэтому я решил поместить его внутрь
3. не используйте
return
инструкцию внутриfor
цикла, это приведет к тому, что она вообще не будет выполнять цикл и будет работать только в течение одной итерации, вам нужно сохранить результат в переменной, а затем вместо этого вернуть эту переменную, как только цикл будет завершен. в основномif(found) return true
в цикле for, пожалуйста, проведите больше исследований по отладчику, я больше реагирую, поэтому я не знаю, как это будет работать там, но отладчик очень поможет вам, и тогда мы сможем беспокоиться о регулярном выражении, мы не должны решать здесь несколько проблем.