Перевірка поля регулярного виразу в jQuery


75

У jQuery чи існує функція / плагін, якими я можу скористатися для відповідності регулярному виразу в рядку?

Наприклад, у вікні введення електронної пошти я отримую електронну адресу та хочу перевірити, чи правильно вона вказана. Яку функцію jQuery слід використовувати, щоб перевірити, чи відповідає мій регулярний вираз перевірки вхідному?

Я шукав рішення, але мені нічого не вдалося знайти.


1
Назва цього питання трохи вводить в оману. Мабуть, слід бути більш кваліфікованим, щоб вказати, що це пов’язано із відповідністю вхідних значень форми. Я дав +1 на відповідь nickf, бо це те, що я шукав.
mydoghasworms

Відповіді:


26

Я вважаю, що це робить це:

http://bassistance.de/jquery-plugins/jquery-plugin-validation/

У нього є вбудовані шаблони для таких речей, як URL-адреси та адреси електронної пошти, і я думаю, що ви можете домогтися того, щоб він використовував і власні.


1
Але як щодо загальних відповідностей регулярних виразів? Можливо щось на зразок пошуку регулярного
виразу

12
Ну, я маю на увазі, що ви завжди можете просто використовувати регулярний вираз JavaScript, якщо це все, що вам потрібно зробити ... regular-expressions.info/javascript.html
Даніель Шаффер

7
Це лише я, або JQUERY має жахливий веб-сайт? Я не можу легко знайти, як користуватися або завантажувати цю річ.
Джейсон

83

Якщо ви хотіли шукати деякі елементи на основі регулярного виразу, ви можете скористатися filterфункцією. Наприклад, скажімо, що ви хотіли переконатись, що у всі поля введення користувач ввів лише цифри, тож давайте знайдемо всі входи, які не збігаються, і виділимо їх.

$("input:text")
    .filter(function() {
        return this.value.match(/[^\d]/);
    })
    .addClass("inputError")
;

Звичайно, якби це було щось подібне, ви можете використовувати плагін перевірки форми, але цей метод можна застосувати до будь-якого типу елементів, який вам подобається. Ще один приклад, щоб показати, що я маю на увазі: Знайти всі елементи, чиї idзбіги/[a-z]+_\d+/

$("[id]").filter(function() {
    return this.id.match(/[a-z]+_\d+/);
});

30

Я використовую jQuery та JavaScript, і це прекрасно для мене працює:

var rege = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
if(rege.test($('#uemail').val())){ //do something }

5
Незначне додавання, ваше не розпізнає наявність на вашій електронній адресі знака "+": var rege = /^([A-Za-z0-9_\+\-\.])+\@([A-Za-z0- 9 _ \ - \.]) + \. ([A-Za-z] {2,4}) $ /; Я не кажу, що моя ідеальна, я просто кажу, що ваша не працює для моєї електронної пошти :-)
keif

26

Якщо ви не шукаєте чогось конкретного, ви вже можете виконати відповідність регулярних виразів, використовуючи звичайний Javascript із рядками.

Наприклад, ви можете виконати зіставлення за допомогою рядка приблизно так ...

var phrase = "This is a phrase";
phrase = phrase.replace(/is/i, "is not");
alert(phrase);

Чи є щось, що ви шукаєте, крім загального збігу регулярних виразів?


27
Ваш приклад поверне "Це не фраза"! :-)
Ian Roke

7
Кумедний улов - я ніколи насправді не запускав код, але ти маєш рацію - він збігається на першому "є", що фактично є в кінці слова "Це" - Оскільки він ігнорує решту рядка, він нічого не робить до другого "є". Дуже смішно :)
Hugoware

-1 для недостатньої кількості jQuery ... ... ... добре, жартую, я насправді підтримав вашу відповідь :)
brandizzi

3

Мій код:

$("input.numeric").keypress(function(e) { /* pour les champs qui ne prennent que du numeric en entrée */          
            var key = e.charCode || e.keyCode || 0;                     
            var keychar = String.fromCharCode(key);
            /*alert("keychar:"+keychar + " \n charCode:" + e.charCode + " \n key:" +key);*/
            if (  ((key == 8 || key == 9 || key == 46 || key == 35 || key == 36 || (key >= 37 && key <= 40)) && e.charCode==0) /* backspace, end, begin, top, bottom, right, left, del, tab */
                    || (key >= 48 && key <= 57) ) { /* 0-9 */
                return;
            } else {
                e.preventDefault();
            }
        });

3
Тут не використовується регулярний вираз
Кріс Б,

0

Простий приклад у наш час:

$('#some_input_id').attr('oninput',
"this.value=this.value.replace(/[^0-9A-Za-z\s_-]/g,'');")

це означає, що все, що не відповідає регулярному виразу, стає нічим, тобто ''


-1

З jquery.validate.js (від joern), автор Скотт Гонсалес: http://projects.scottsplayground.com/email_address_validation/

/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i

Не забудьте подвоїти @@, якщо ви використовуєте MVC Razor:

 /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i

Голодні спагетті?

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.