Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.07.2010, 01:15
Новичок на форуме
Отправить личное сообщение для Innuendo108 Посмотреть профиль Найти все сообщения от Innuendo108
 
Регистрация: 12.07.2010
Сообщений: 5

Не важный порядок в регулярном выражении
Хочется в строке найти вот такие конструкции:
foo!test@alpha

при том ! и @ это как атрибуты и они не обязательны, и их порядок тоже не обязателен.
В итоге я хочу получить отдельно name="foo", atr_exclamation = "test" и attr_at = "alpha"

это находится вот таким регом:
/(\w+)(\!\w+)?(\@\w+)?/ - и всё находится. Но если я вдруг поменяю местами: foo@alpha!test, то он уже не найден так как надо.
Как указать в регулярном выражении, что порядок второй и третьей захватывающих скобок не важен?
Ответить с цитированием
  #2 (permalink)  
Старый 27.07.2010, 02:25
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

str="  foo@alpha!test    foo!test@alpha   ";
 reg=/((\w+)(!(\w+)|@(\w+)){2})/g
 b=str.replace(reg,'\n$1 ==> name="$2",atr_exclamation="$4",attr_at="$5"');
 alert(b);

Последний раз редактировалось рони, 27.07.2010 в 06:37.
Ответить с цитированием
  #3 (permalink)  
Старый 27.07.2010, 05:06
Новичок на форуме
Отправить личное сообщение для Innuendo108 Посмотреть профиль Найти все сообщения от Innuendo108
 
Регистрация: 12.07.2010
Сообщений: 5

идею понял, спасибо.
атрибутов ! и @ может вообще не быть, поэтому мне надо было исправить {2}..исправлял на * - но как-то не помогло.
в итоге я сделал по очереди.
Сначала общим регекспом ищу всю структуру. А потом в ней ищу ! и @. (тем более их может быть несколько)
Ответить с цитированием
  #4 (permalink)  
Старый 27.07.2010, 06:05
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

! и @ не надо экранировать
Ответить с цитированием
  #5 (permalink)  
Старый 27.07.2010, 14:57
Новичок на форуме
Отправить личное сообщение для Innuendo108 Посмотреть профиль Найти все сообщения от Innuendo108
 
Регистрация: 12.07.2010
Сообщений: 5

x-yuri,
=)) я на всякий случай. У меня в реальном примере - там другие символы, и их надо экранировать.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
количество повторений в регулярном выражении mrWong Общие вопросы Javascript 2 10.02.2010 12:57
Проблема с кавычкой в регулярном выражении bandolero Общие вопросы Javascript 5 31.01.2010 11:37