Не важный порядок в регулярном выражении
Хочется в строке найти вот такие конструкции:
foo!test@alpha при том ! и @ это как атрибуты и они не обязательны, и их порядок тоже не обязателен. В итоге я хочу получить отдельно name="foo", atr_exclamation = "test" и attr_at = "alpha" это находится вот таким регом: /(\w+)(\!\w+)?(\@\w+)?/ - и всё находится. Но если я вдруг поменяю местами: foo@alpha!test, то он уже не найден так как надо. Как указать в регулярном выражении, что порядок второй и третьей захватывающих скобок не важен? |
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); |
идею понял, спасибо.
атрибутов ! и @ может вообще не быть, поэтому мне надо было исправить {2}..исправлял на * - но как-то не помогло. в итоге я сделал по очереди. Сначала общим регекспом ищу всю структуру. А потом в ней ищу ! и @. (тем более их может быть несколько) |
! и @ не надо экранировать
|
x-yuri,
=)) я на всякий случай. У меня в реальном примере - там другие символы, и их надо экранировать. |
Часовой пояс GMT +3, время: 16:26. |