Получение результата RegExp после использования в операторе if - PullRequest
1 голос
/ 15 июня 2009

Я видел, как люди делают следующее:

if (/Firefox\/(\+S)/.test(userAgent)) {
    firefox = RegExp.$1;
}

Я знаю (вроде), что делает регулярное выражение, но я не совсем уверен, как к нему можно получить доступ с помощью RegExp.$1.

И в качестве примечания:

if (/Win(?:dows )?([^do]{2})\s?(\d+\.\d+)?/.test(ua)) {
    if (RegExp.$1 == "NT") {
        switch (RegExp.$2) {

В чем разница между $1 и $2?

Ответы [ 2 ]

4 голосов
/ 15 июня 2009

Какая разница между 1 и 2 долларами?

Это ссылки на захваченные группы (захваченные регулярным выражением)

JavaScript-код регулярного выражения относится к группе № 1 как $ 1 и группе № 2 как $ 2.

 Win(?:dows )?([^do]{2})\s?(\d+\.\d+)?
     ^         ^            ^
     |         |            |
     |         group#1      group#2
     |
     ignored group (?: means non-capturing)
0 голосов
/ 15 июня 2009

RegExp - это глобальный объект, который обновляется при каждом запуске RegExp. RexExp. $ 1 будет содержать текст, соответствующий соответствующему набору скобок в последнем сопоставленном шаблоне.

Для sidenote: $ 1 содержит первую часть регулярного выражения в скобках, $ 2 - секунды и т. Д. *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...