как в javascript проверить с помощью регулярных выражений соответствие маски и шаблона этой маске?

#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, пожалуйста, проведите больше исследований по отладчику, я больше реагирую, поэтому я не знаю, как это будет работать там, но отладчик очень поможет вам, и тогда мы сможем беспокоиться о регулярном выражении, мы не должны решать здесь несколько проблем.