Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Простая регулярка (https://javascript.ru/forum/misc/54929-prostaya-regulyarka.html)

Andrei 07.04.2015 07:07

Простая регулярка
 
Здравствуйте!

Редко сталкиваюсь с регулярными выражениями и всегда это проблема для меня!(

Такой вот вопрос:

Пользователь должен ввести название бренда и в скобках страну, например: TOYOTA (Япония) или ВАЗ (Россия).

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

laimas 07.04.2015 07:54

Да их не так и много, производителей авто, удобнее не вводить, а предлагать выбор из списка.

Andrei 07.04.2015 07:59

У меня там ajax автокомплит, с полем удобно то, что всегда можно предложить свой вариант!

laimas 07.04.2015 08:07

И что, проверять это рег. выражениями. Как вы себе это представляете? Ведь при этом в паттерне нужно прописать все эти бренды, хотя можно сравнивать по наличию элемента в массиве, но который тоже должен быть описан. А если новое, предложенный вариант, то как узнать верный ли он, с чем его сравнивать?

Без обиды, но это называется маяться дурью. Для кого это и кто хранит эти бренды, ваш автокомплит или же все-таки сервер?

Andrei 07.04.2015 08:11

Мне нужно только чтобы пользователь правильно указал формат, "название (страна)", а проверять правильно ли он написал или "sdfsdfsf (addasda)" не нужно!

laimas 07.04.2015 08:15

Каким образом? Я напишу STRING (Тобаго) - это будет правильно?

PS. Проверить наличие () и пробелов в строке рег. выражением не проблема, но зачем, и не проще ли добавление нового это бренд и страна как отдельные поля? Если это ради помещения такого в базе, значит данные о брендах в базе имеют не лучшее отображение, а наихудшее.

ksa 07.04.2015 08:19

Цитата:

Сообщение от Andrei
Помогите с регулярным выражением, как проверить верно ли введено значение!?

Размером оно будет немалым... :D

Как вариант...
var str='TOYOTA (Япония)';
alert(ok(str));
str='NISSAN (Япония)';
alert(ok(str));
str='ВАЗ (Россия)';
alert(ok(str));
str='УАЗ (Россия)';
alert(ok(str));
function ok(Str) {
	var re=/^(((TOYOTA|NISSAN)\s\(Япония\))|((ВАЗ|УАЗ)\s\(Россия\)))$/;
	return re.test(Str);
};

ksa 07.04.2015 08:23

Цитата:

Сообщение от Andrei
Мне нужно только чтобы пользователь правильно указал формат, "название (страна)"

Как вариант...

var str='TOYOTA (Япония)';
alert(ok(str));
str='NISSAN (Япония)';
alert(ok(str));
str='ВАЗ (Россия)';
alert(ok(str));
str='УАЗ (Россия)';
alert(ok(str));
function ok(Str) {
	var re=/^.+\s\(.+\)$/;
	return re.test(Str);
};

laimas 07.04.2015 08:27

var re=/^.+\s\(.+\)$/;

Не пойдет такое, тогда брендом и страной может быть все, что угодно, хотя бы уж буковки одни, и то куда ни шло. )

Andrei 07.04.2015 08:29

Ладно уговорили!) Нашел список производителей, забью его в бд и сделаю select!

Спасибо!


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