Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Как одной регулярной найти все матчи? (https://javascript.ru/forum/offtopic/38322-kak-odnojj-regulyarnojj-najjti-vse-matchi.html)

megaupload 28.05.2013 10:56

Как одной регулярной найти все матчи?
 
"{{chat.input + window.input}} {{chat.input + window.input}}"

как одной регуляркой найти все матчи типа chat.input и window.input

\w+\.\w+


а никак

mta88 28.05.2013 11:47

попробуй модификатор global
g
/\w+\.\w+/g
"{{chat.input + window.input}} {{chat.input + window.input}}".match(/\w+\.\w+/g)

megaupload 28.05.2013 12:00

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

kobezzza 28.05.2013 13:30

Для нормального шаблонизатора одних регулярок не хватит. В твоём случае хз конечно, но у себя я строил дерево по коду и уже от него плясал.

ЗЫ: будь другом, сделай себе нормальную аватарку.

megaupload 28.05.2013 14:29

Цитата:

Сообщение от kobezzza
но у себя я строил дерево по коду и уже от него плясал.

дерево то я построил уже, там маркеры модулей они наполняются виджетами и текстовыми нодами связанными с этими модулями, и вот нужно определить к каким модулям какие текстовые ноды привязаны и на какое свойство вешать обсервер )

короче придется делать "некрасиво"

Цитата:

Сообщение от kobezzza
ЗЫ: будь другом, сделай себе нормальную аватарку.

я пытаюсь "сами знаете кто" решил толсто пошутить.

Aetae 28.05.2013 14:43

А что не так с //g то?

megaupload 28.05.2013 14:46

Цитата:

Сообщение от Aetae
А что не так с //g то?

Ну, надо например учитывать чтобы они находились в тегах {{в.тегах + а.тут}} могут находиться 2 обращения к модулям.

Maxmaxmaximus.js 28.05.2013 22:07

пасоны, вопрос задротам) что вернет этот код)? и сработает ли он)?

d:{d = void 1|0/1}.2

kobezzza 28.05.2013 22:21

Цитата:

Сообщение от Maxmaxmaximus.js (Сообщение 253254)
пасоны, вопрос задротам) что вернет этот код)? и сработает ли он)?

d:{d = void 1|0/1}.2

Гм...

d: {} - это блок с меткой
void 1 - даст undefined, следовательно результат 0/1 (0). Т.к. у нас не блочная видимость (хотя let уже в некоторых браузерах есть), то блок вернёт своё последнее значение, т.е. результат d = 0 => 0. Ну а .2 будут применены к полученному нулю: в итоге будет 0.2.

Maxmaxmaximus.js 28.05.2013 22:26

Цитата:

Сообщение от kobezzza
Ну а .2 будут применены к полученному нулю

alert( eval("{2}.4") )


ну а вообще ты крут, я наебался с приоритетом войда

kobezzza 28.05.2013 22:28

ну void же унарный оператор, а у них оч высокий приоритет.

monolithed 28.05.2013 22:30

Цитата:

Сообщение от Maxmaxmaximus.js
что вернет этот код)?

0.2
Цитата:

Сообщение от Maxmaxmaximus.js
сработает ли он)?

Малыш узнал про метки?

d: - создание метки

a:1; 2; // 2

{} - block scope, который в JS поддерживается только на уровне синтаксиса , без реализации (

{
  var a = 1;
}

a; // 1

void 1; undefined

0/1; - 0

undefined | 0; // выполняется целочисленное преобразование

{0}.2; // 0.2

Maxmaxmaximus.js 28.05.2013 22:32

Цитата:

Сообщение от monolithed
Малыш узнал про метки?

метки?

monolithed 28.05.2013 22:35

Цитата:

Сообщение от Maxmaxmaximus.js
метки?

а что смущает?

Maxmaxmaximus.js 28.05.2013 23:05

чо за метки?

monolithed 28.05.2013 23:12

https://developer.mozilla.org/en-US/...ent s%2Flabel

Maxmaxmaximus.js 28.05.2013 23:27

Блин а по русски есть?

kobezzza 28.05.2013 23:42

Цитата:

Сообщение от Maxmaxmaximus.js (Сообщение 253267)
Блин а по русски есть?

Дык там всё просто. Метку можно повесить на блок, а затем использовать вместе с операторами break и continue;

top: while (1) {
  var i = 10;
  while (i--) {
      if (i === 5) {
          break top;
      }
  }
}


Без метки break сбросил бы вложенный цикл, а так он сбросил верхний цикл. Кроме циклов ещё можно использовать с конструкцией switch.

На практике метки не оч часто используются, но иногда удобно, если знаешь про них.

melky 28.05.2013 23:53

http://javascript.ru/forum/misc/9459...tml#post101278

monolithed 28.05.2013 23:58

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

label:
for (var a = 0; a < 2; a++) 
{
   console.log(a);
   for (var b = 3; b < 5; b++) 
   {
      for (var c = 6; c < 9; c++) 
      {
          console.log(c);

          if (c == 7)
            continue label;
      }
   }
}

Maxmaxmaximus.js 29.05.2013 00:23

Цитата:

Сообщение от kobezzza
Дык там всё просто.

ты то чо ведешься ^_^ лол ) очевидно что я знаю что такое метки)

Цитата:

Сообщение от monolithed
На самом деле очень полезная штука при написании парсеров.

на самом деле я часа 2 назад заметил это))

kobezzza 29.05.2013 10:17

Цитата:

Сообщение от Maxmaxmaximus.js (Сообщение 253286)
ты то чо ведешься ^_^ лол )

Старый стал:)


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