likes
comments
collection
share

微信小程序的wxs中正则表达式的使用

作者站长头像
站长
· 阅读数 43

普通js写法 RegExp 对象

var patt = new RegExp(pattern,modifiers);

或者更简单的方式:

var patt = /pattern/modifiers;
  • pattern(模式) 描述了表达式的模式
  • modifiers(修饰符) 用于指定全局匹配、区分大小写的匹配和多行匹配

注意:当使用构造函数创造正则对象时,需要常规的字符转义规则(在前面加反斜杠 \)。比如,以下是等价的:

var re = new RegExp("\\w+");
var re = /\w+/;

小程序wxs文件中使用正则表达式 getRegExp 代替 RegExp

我们知道js中可以使用下面正则,

var reg = /[0-9]{11}/;
reg.test();

但是如果你在wxs中使用上面的,会报下面的错误

.test is not a function

小程序官网文档

developers.weixin.qq.com/miniprogram…

微信小程序的wxs中正则表达式的使用

wxs中使用正则的方式是先使用 getRegExp(pattern[, flags]) 创建一个对象,然后再进行正则匹配,类似如下

var reg = getRegExp('[0-9]{11}'); // wxs 正则表达式两边不用定界符 /
reg.test(string);

一个DEMO示例

// 脱敏数据显示 账号 姓名 证件号 大于4位12**5 小于等于四位***4
// 手机号码显示前三后三 150*****129 邮箱:显示前两位,以及@后面全显示例如:47*******@qq.com
let SensitiveData = function (type = 'Id', val) {
    if (!val) return ''
    
    if (type === 'phone') { // 手机 11位
        return `${val.slice(0, 3)}*****${val.slice(-3)}`
    }
    
    let reg = getRegExp('.', 'g') // 正则表达式
    let remainStr = val.replace(reg, '*') // 替换
    let lasterStr = val.slice(-1) // 最后一位
    let remainLen = val.length - lasterStr.length // 先减去最少一位
    
    if (val.length > 4) {
        let twoStr = val.slice(0, 2) // 开头两位
        if (type === 'email') { // 邮箱 多位
            var symbol = val.split('@')
            remainLen = remainLen - symbol\[0\].length - 1
            return `${val.slice(0, 2)} ${remainStr.slice(0, remainLen)} ${symbol\[1\]}`
    }
        // 身份证 证件号 名字
        remainLen = remainLen - twoStr.length
        return `${twoStr}${remainStr.slice(0, remainLen)}${lasterStr}`
    } else {
        return `${remainStr.slice(0, remainLen)}${lasterStr}`
    }
}

转载自:https://juejin.cn/post/7024006179999203359
评论
请登录