Spec-Zone.ru › RethinkDB javascript

Команда ReQL: match

Синтаксис команды

string.match(regexp) → null/object

Описание

Сопоставляет строку с регулярным выражением. Если совпадение найдено, возвращает объект с полями:

  • str: Совпавшая строка
  • start: Начало совпавшей строки
  • end: Конец совпавшей строки
  • groups: Группы захвата, определённые в скобках

Если совпадение не найдено, возвращает null.

Принимает синтаксис RE2. Можно включить регистронезависимое соответствие, добавив префикс (?i) к регулярному выражению. Более подробные флаги см. в документации RE2.

Команда match не поддерживает обратные ссылки.

Пример: Получить всех пользователей, чьё имя начинается с "A". Так как null вычисляется в false в фильтре, вы можете просто использовать результат match в качестве предиката.

r.table('users').filter(function(doc){
    return doc('name').match("^A")
}).run(conn, callback)

Пример: Получить всех пользователей, чьё имя заканчивается на "n".

r.table('users').filter(function(doc){
    return doc('name').match("n$")
}).run(conn, callback)

Пример: Получить всех пользователей, чьё имя содержит "li".

r.table('users').filter(function(doc){
    return doc('name').match("li")
}).run(conn, callback)

Пример: Получить всех пользователей, чьё имя "John" (регистронезависимый поиск).

r.table('users').filter(function(doc){
    return doc('name').match("(?i)^john$")
}).run(conn, callback)

Пример: Получить всех пользователей, чьё имя состоит только из символов от "a" до "z".

r.table('users').filter(function(doc){
    return doc('name').match("(?i)^[a-z]+$")
}).run(conn, callback)

Пример: Получить всех пользователей, у которых почтовый индекс — строка из 5 цифр.

r.table('users').filter(function(doc){
    return doc('zipcode').match("\\d{5}")
}).run(conn, callback)

Пример: Извлечь домен из простого адреса электронной почты.

r.expr("name@domain.com").match(".*@(.*)").run(conn, callback)

Результат:

{
    start: 0,
    end: 20,
    str: "name@domain.com",
    groups: [
        {
            end: 17,
            start: 7,
            str: "domain.com"
        }
    ]
}

Затем можно извлечь домен с помощью селектора () и функции nth.

r.expr("name@domain.com").match(".*@(.*)")("groups").nth(0)("str").run(conn, callback)

Возвращает 'domain.com'

Пример: Не удаётся разобрать домен, возвращает null.

r.expr("name[at]domain.com").match(".*@(.*)").run(conn, callback)

© RethinkDB contributors
Licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
https://rethinkdb.com/api/javascript/match/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API