微信小程序云開發(fā)服務(wù)端數(shù)據(jù)庫API 正則對(duì)象

2022-05-12 16:19 更新

db.RegExp

從基礎(chǔ)庫 2.3.2 開始(wx-server-sdk 從 0.0.23 開始),數(shù)據(jù)庫支持正則表達(dá)式查詢,開發(fā)者可以在查詢語句中使用 JavaScript 原生正則對(duì)象或使用 db.RegExp 方法來構(gòu)造正則對(duì)象然后進(jìn)行字符串匹配。在查詢條件中對(duì)一個(gè)字段進(jìn)行正則匹配即要求該字段的值可以被給定的正則表達(dá)式匹配,注意正則表達(dá)式不可用于 db.command 內(nèi)(如 db.command.in)。

使用正則表達(dá)式匹配可以滿足字符串匹配需求,但不適用于長文本 / 大數(shù)據(jù)量的文本匹配 / 搜索,因?yàn)闀?huì)有性能問題,對(duì)此類場景應(yīng)使用文本搜索引擎如 ElasticSearch 等實(shí)現(xiàn)。

db.RegExp 定義如下:

function RegExp(initOptions: IInitOptions): DBRegExp

interface IInitOptions {
  regexp: string // 正則表達(dá)式,字符串形式
  options: string // flags,包括 i, m, s 但前端不做強(qiáng)限制
}

options 支持 i, m, s 這四個(gè) flag,注意 JavaScript 原生正則對(duì)象構(gòu)造時(shí)僅支持其中的 i, m 兩個(gè) flag,因此需要使用到 s 這個(gè) flag 時(shí)必須使用 db.RegExp 構(gòu)造器構(gòu)造正則對(duì)象。flag 的含義見下表:

flag說明
i大小寫不敏感
m跨行匹配;讓開始匹配符 ^ 或結(jié)束匹配符 $ 時(shí)除了匹配字符串的開頭和結(jié)尾外,還匹配行的開頭和結(jié)尾
s讓 . 可以匹配包括換行符在內(nèi)的所有字符

基礎(chǔ)用法示例:

// 原生 JavaScript 對(duì)象
db.collection('todos').where({
  description: /miniprogram/i
})

// 數(shù)據(jù)庫正則對(duì)象
db.collection('todos').where({
  description: db.RegExp({
    regexp: 'miniprogram',
    options: 'i',
  })
})

// 用 new 構(gòu)造也是可以的
db.collection('todos').where({
  description: new db.RegExp({
    regexp: 'miniprogram',
    options: 'i',
  })
})


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)