Я пытаюсь уведомить пользователя о недопустимых символах, введенных во ввод с помощью 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>Что я делаю неправильно?
Вы правы ... :) но как сообщить пользователю о недопустимом символе?
вместо этого используйте свое регулярное выражение для поиска недопустимых символов. var regex = /^[^a-zA-Z ].*$/;, если это правда, вы можете использовать match для получения неправильных символов.
Ваше регулярное выражение проверяет, действительна ли запись. Итак, напишите регулярное выражение, которое ищет символы инвалид.
@wayneOS: Почти, за исключением исключения маркеров ^ и $: var regex = /[^a-zA-Z ].*/g; В противном случае он будет соответствовать только строкам, полностью состоящим из недопустимых символов. Также добавьте g в конце, чтобы он нашел все совпадения.
спасибо Máté Safranka ... это работает. Я использую регулярное выражение, не понимая метода сопоставления :). пока и спасибо
@ MátéSafranka omg, да, ты прав! написал что в спешке. Благодарность



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете создать второе регулярное выражение, подобное текущему, и протестировать его. /[^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>Приятно ... просто хочу добавить точку и запятую ... как место в правильном регулярном выражении?
Вам просто нужно добавить их в список предметов.
Я сделал обновление, посмотрите, вам просто нужно изменить переменную acceptable на элементы, которые вы хотите принять.
Очень читабельно ... более обслуживаемым..ткс. Я новичок с js jquery
Если
regex.test()возвращает false, то, конечно,match()вернет null. Значит, совпадений нет.