Как в регулярном выражении обозначается "может быть а может и не быть" ?
Пример: составил регулярку /(var|Integer|Number|Object|Boolean)?\s*\w+\s*(=\s* "?.*"?\s*)?;/
Она должна искать все переменные, объявленные в javascript коде. Но в итоге получается так что какие то куски она находит несколько раз. К примеру в коде: Integer i; d = 0; var a = d; Оно находит: Всего совпадений 3 1 : Integer i; 1.1 : Integer 2 : var a = d; 2.1 : var 2.2 : = d 3 : d = 0; 3.1 : 3.2 : = 0 Какие то подсовпадения >_< |
почитайте http://javascript.ru/String/match
видимо надо использовать /.../g |
Цитата:
Цитата:
|
"Какие то подсовпадения" - то, что в круглых скобках. А обозначили Вы правильно - ? - может быть, а может и не быть; * - может и не быть, а может быть и не один; + должен быть, но может и несколько раз; \w - не совсем правильно - переменная не может начинаться с цифры, а значит нужно \D+\w*. Ну, или что-то в этом роде.
А еще могут быть варианты типа var a, b, c = 3, d = b; Тогда это выражение работать не будет. |
А как результат выводите?
Попробуйте "не запоминающие" скобки /(?:var|Integer|Number|Object|Boolean)?\s*\w+\s*(?: =\s* "?.*"?\s*)?;/ |
Часовой пояс GMT +3, время: 17:00. |