Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   помогите составить регексп (https://javascript.ru/forum/misc/20850-pomogite-sostavit-regeksp.html)

ChikiSt 19.08.2011 22:42

помогите составить регексп
 
Добрый вечер. помогите пожалуйста сформировать регулярное выражение ...
есть строка
var str='Катя забрала у Феди Иванова 3 конфеты'
var name='Катя';
фамилия Феди может как присутствовать, так и отсутствовать. нужно составить что-то типа этого...
var Reg= new RegExp(name+ ' забрала у (\w+)(\s)?(\w+)?', "i")
if (Reg.test(str)) ...

подскажите где ошибка

Kolyaj 19.08.2011 22:54

\w не работает с кириллицей.

ChikiSt 20.08.2011 12:15

изменил \w на \\D , оказывается обратные слеши (\) должны экранироваться :) заработало )

ChikiSt 21.08.2011 07:42

чтобы не создавать новую тему, спрошу в этой...
Допустим меются регекспы
var katya= new RegExp('Катя', "i");
var fedya=new RegExp('Федя Иванов', "i");
var senya=new RegExp('Сеня', "i");
и строка
var srt="Коля Сеня Федя катя Боря Федя Иванов";
Как осуществить поиск в строке этих регекспов и вывести первый попавшийся ?

popov654 21.08.2011 08:08

Сложите их в массив и воспользуйтесь search() или match() методами String, либо test() или exec() методами самого RegExp
А вообще вот отличная статья по этому поводу:
http://javascript.ru/basic/regular-expression :)

ChikiSt 21.08.2011 09:38

если я составляю регексп таким образом...
var reg=new RegExp('Федя Иванов|Сеня', "i");
var srt="Коля Сеня Федя катя Боря Федя Иванов";
if (reg.test(str)) ...
то он прекрасно находится в строке, но если записать имя в переменную, то он его не находит...
var katya= 'Катя';
var reg=new RegExp('Федя Иванов|Сеня'|katya, "i"); - так не находит никиких значений
var reg=new RegExp('Федя Иванов|Сеня'||katya, "i"); - так находит только федю и сеню
Что не так ?

popov654 21.08.2011 09:47

А то не так, что Вы непонятно что написали :)
Вот как надо:
var reg=new RegExp('Федя Иванов|Сеня|' + katya, "i");

ChikiSt 21.08.2011 09:55

Спасибо Вам большое ! заработало :)


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