最近在开发微信小程序,因为小程序它不支持html,所以原来的&'等这些html能解析的标记都无法正确解析显示了。那怎么办呢,只能用js正则去处理了。

先简单介绍下,正则在js中是有一个内置对象的

1
2
3
4
5
// 创建RegExp对象的语法
var reg = new RegExp("Helloworld","g");

// 直接量语法,推荐
var reg = /Helloworld/g;

这里的RegExp对象接受两个参数,第一个参数是一个字符串指定了正则表达式,第二个则是修饰符,包含属性 “g”、”i” 和 “m”,分别用于指定全局匹配、区分大小写的匹配和多行匹配。
RegExp有两个常用的方法,test()和exec()。使用方式如下:

1
2
3
4

var str = "Helloworld";
console.log(reg.test(str)); // true, 返回是否成功匹配
console.log(reg.exec(str)); // ["Helloworld", index: 0, input: "Helloworld"], 检索字符串中指定的值。返回找到的值,并确定其位置。

并且RegExp对象支持String对象的四个方法search(),match(),replace(),split()。

好了,切入正题。
其实写的方法也很简单,在utils.js中写了一个替换字符串的函数如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
// 处理&等这些html可识别的符号标记
// utils.js
function dealChar(){
return this.replace(/\&/ig, '&')
.replace(/\'|’|‘/ig, "'")
.replace(/,/ig, ",")
.replace(/“|”|"/ig, '"');
}
module.exports = {
dealChar: dealChar
}
// 在index.js中用call()调用
var rich_text = utils.dealChar.call(res); // res是待处理的字符串

这种方法其实不是很好,因为可扩展性和可重用性都太低了,等有时间专门去研究下优化优化!
写完发现这篇文章可能还是适合新手,一些玩转js正则的大神估计都不够看~
以后遇到js正则的问题,其实去w3school仔细看一遍,8成的问题应该都能解决。那上面已经列举了很多种正则匹配的情况了。

正则表达式全部符号解释
w3school参考