微信小程序是一种新型的应用,它可以在微信中运行,提供丰富的功能和服务。正则表达式是一种用于检测字符串中特定模式的工具,在微信小程序中也有广泛的应用。
正则表达式可以帮助我们快速验证字符串中是否包含特定的内容,例如验证手机号、邮箱地址、身份证号等。在微信小程序中,我们可以使用正则表达式来验证用户输入的内容是否正确,避免出现不必要的错误。
// 验证手机号 let reg = /^1[3-9]\d{9}$/; if (reg.test(phone)) { // 手机号格式正确 } else { // 手机号格式不正确 }
从基础库 2.3.2 开始(wx-server-sdk 从 0.0.23 开始),数据库支持正则表达式查询,开发者可以在查询语句中使用 JavaScript 原生正则对象或使用 db.RegExp 方法来构造正则对象然后进行字符串匹配。在查询条件中对一个字段进行正则匹配即要求该字段的值可以被给定的正则表达式匹配,注意正则表达式不可用于 db.command 内(如 db.command.in)。
使用正则表达式匹配可以满足字符串匹配需求,但不适用于长文本 / 大数据量的文本匹配 / 搜索,因为会有性能问题,对此类场景应使用文本搜索引擎如 ElasticSearch 等实现。
db.RegExp 定义如下:
function RegExp(initOptions: IInitOptions): DBRegExp
interface IInitOptions {
regexp: string // 正则表达式,字符串形式
options: string // flags,包括 i, m, s 但前端不做强限制
}
options 支持 i, m, s 这四个 flag,注意 JavaScript 原生正则对象构造时仅支持其中的 i, m 两个 flag,因此需要使用到 s 这个 flag 时必须使用 db.RegExp 构造器构造正则对象。flag 的含义见下表:
flag | 说明 |
---|---|
i | 大小写不敏感 |
m | 跨行匹配;让开始匹配符 ^ 或结束匹配符 $ 时除了匹配字符串的开头和结尾外,还匹配行的开头和结尾 |
s | 让 . 可以匹配包括换行符在内的所有字符 |
基础用法示例:
// 原生 JavaScript 对象
db.collection("todos").where({
description: /miniprogram/i
})
// 数据库正则对象
db.collection("todos").where({
description: db.RegExp({
regexp: "miniprogram",
options: "i",
})
})
// 用 new 构造也是可以的
db.collection("todos").where({
description: new db.RegExp({
regexp: "miniprogram",
options: "i",
})
})
cloud.database获取数据库的引用方法签名如下:function database(options?: object): Database方法接受一个可选对象参数 option...
Document.update更新一条记录函数签名如下:function update(options: object): PromiseResult参数说明字段名类型必填默认值说明...
Collection.field / Query.field / Document.field指定返回结果中记录需返回的字段方法签名如下:function field(definition: ob...
uploadFile将本地资源上传至云存储空间,如果上传至同一路径则是覆盖。请求参数字段说明数据类型默认值必填cloudPath云存储路径S...
Cloud.deleteFile(fileList: string[]): PromiseObject支持端:小程序,云函数,Web从云存储空间删除文件,一次最多 50 个参数file...
Database.serverDate(options:Object):ServerDate支持端:小程序,云函数,Web构造一个服务端时间的引用。可用于查询条件、更新字...
Collection.get(): PromiseObject支持端:小程序,云函数,Web获取集合数据,或获取根据查询条件筛选后的集合数据。返回值Promise....
Aggregate.limit(value: number):Aggregate支持端:小程序 2.7.4,云函数 0.8.1,Web聚合阶段。限制输出到下一阶段的记录数。参数v...
Aggregate.sortByCount(object:Object):Aggregate支持端:小程序 2.7.4,云函数 0.8.1,Web聚合阶段。根据传入的表达式,将传入的...
Command.all(values: any[]):Command支持端:小程序 2.8.3,云函数 1.2.1,Web数组查询操作符。用于数组字段的查询筛选条件,要求...