Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Регулярное выражение (https://javascript.ru/forum/misc/39485-regulyarnoe-vyrazhenie.html)

OklickSpb 02.07.2013 01:22

Регулярное выражение
 
Всем доброго времени суток!
Хочу реальзовать такое регулярное вырадение:
Разрешено вводить только латиницу, цифры и нижнее подчеркивание( _ ), все остальное - ошибка.
Рылся в инете ничего подходящего не нашел. Сам составить пробовал, не получилось.
Пробовал так:
var reg = new RegExp(/[0-9a-z_]+/i);
return reg.test(text);
//Не ругается на русские символы.

Помогите плиз.
Заранее благодарен.

Deff 02.07.2013 01:35

function tststr(text){
return text.replace(/[0-9a-z_]+/ig,'')=='';
}

var a="gggggggggggggggg";
alert(tststr(a));

var b="Не ругается на русские символы.";
alert(tststr(b));

OklickSpb 02.07.2013 01:38

При вводе такой строки не ругается: "qwertew1ывап"

Deff 02.07.2013 01:47

Цитата:

Сообщение от OklickSpb
При вводе такой строки не ругается: "qwertew1ывап"

Тестим!

function tststr(text){
return text.replace(/[0-9a-z_]+/ig,'')=='';
}


var b="qwertew1ывап";
alert(tststr(b));

OklickSpb 02.07.2013 02:10

Благодарю.
Оказывается
var pattern = new RegExp(/[0-9a-z_]+/ig);
return pattern.test(text);

и
return text.replace(/[0-9a-z_]+/ig,'')=='';

Работают по разному)

Deff 02.07.2013 02:21

OklickSpb,
Ну идея в том, что pattern.test проверяет на наличие в строке твоих символов, и при наличии хоть одного - выдает true
А text.replace - удаляет все правильные символы - и оставляеь все неправильные(если есть)
Для пользования в данном примере pattern.test в качестве RegExp нужно выбирать все лишние символы, русские и т.д, что посчитал излишним трудом...
Хотя можно найти и иные варианты - так правильнее:


function tststr(text){
var pattern = new RegExp(/[^0-9a-z_]+/ig);
return !pattern.test(text);
}

var a="gggggggggggggggg";
alert(tststr(a));

var b="qwertew1ывап";
alert(tststr(b));

OklickSpb 02.07.2013 02:40

Понял, спасибо большое!)

sexyQuery 02.07.2013 04:25

/^[a-z\d_]{1,30}$/i.test('OklickSpb');
/^[a-z\d_]{1,30}$/i.test('Hello, world!');
^ - начало строки
$ - конец строки

sexyQuery 02.07.2013 04:26

{минимальная_длина,максима ьная_длина}

sexyQuery 02.07.2013 04:27

а вот это интересный баг форума --> максимальный


Часовой пояс GMT +3, время: 04:55.