微信小程序的wxs中正则表达式的使用
普通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中使用正则的方式是先使用 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