Regex соответствует Javascript

Я пытаюсь уведомить пользователя о недопустимых символах, введенных во ввод с помощью RegularExpressions, однако он всегда возвращает null.

Вот мой код:

$(document).ready(function() {

  var nome = $('#name');
  var regex = /^[a-zA-Z ]{3,50}$/;
  var btn = $('#btnGo');

  btn.on('click', function() {
    if (!regex.test(nome.val()))
      alert(nome.val().match(regex).join(''));
    else
      alert('Ok');
  });

});
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type = "text" id = "name" />
<button id = "btnGo">Go</button>

Что я делаю неправильно?

Если regex.test() возвращает false, то, конечно, match() вернет null. Значит, совпадений нет.

Máté Safranka 24.05.2018 16:27

Вы правы ... :) но как сообщить пользователю о недопустимом символе?

MeJonata 24.05.2018 16:32

вместо этого используйте свое регулярное выражение для поиска недопустимых символов. var regex = /^[^a-zA-Z ].*$/;, если это правда, вы можете использовать match для получения неправильных символов.

wayneOS 24.05.2018 16:35

Ваше регулярное выражение проверяет, действительна ли запись. Итак, напишите регулярное выражение, которое ищет символы инвалид.

Máté Safranka 24.05.2018 16:35

@wayneOS: Почти, за исключением исключения маркеров ^ и $: var regex = /[^a-zA-Z ].*/g; В противном случае он будет соответствовать только строкам, полностью состоящим из недопустимых символов. Также добавьте g в конце, чтобы он нашел все совпадения.

Máté Safranka 24.05.2018 16:36

спасибо Máté Safranka ... это работает. Я использую регулярное выражение, не понимая метода сопоставления :). пока и спасибо

MeJonata 24.05.2018 16:41

@ MátéSafranka omg, да, ты прав! написал что в спешке. Благодарность

wayneOS 24.05.2018 16:41
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
7
68
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете создать второе регулярное выражение, подобное текущему, и протестировать его. /[^a-zA-Z ]/g будет соответствовать всем элементам, которые противоположны исходному регулярному выражению, поскольку первый элемент в [] - это ^.

$(document).ready(function() {

  var nome = $('#name');
  var acceptable = 'a-zA-Z.\', ';
  var valid = new RegExp(`^[${acceptable}]{3,50}$`);
  var invalid = new RegExp(`[^${acceptable}]`, 'g');
  var btn = $('#btnGo');

  btn.on('click', function() {
    if (!valid.test(nome.val()))
      alert(nome.val().match(invalid).join(''));
    else
      alert('Ok');
  });

});
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type = "text" id = "name" />
<button id = "btnGo">Go</button>

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

MeJonata 24.05.2018 17:00

Вам просто нужно добавить их в список предметов.

Get Off My Lawn 24.05.2018 17:01

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

Get Off My Lawn 24.05.2018 17:05

Очень читабельно ... более обслуживаемым..ткс. Я новичок с js jquery

MeJonata 24.05.2018 17:10

Другие вопросы по теме