最近在开发微信小程序,因为小程序它不支持html,所以原来的&'等这些html能解析的标记都无法正确解析显示了。那怎么办呢,只能用js正则去处理了。
先简单介绍下,正则在js中是有一个内置对象的
// 创建RegExp对象的语法
var reg = new RegExp("Helloworld","g");
// 直接量语法,推荐
var reg = /Helloworld/g;
这里的RegExp对象接受两个参数,第一个参数是一个字符串指定了正则表达式,第二个则是修饰符,包含属性 "g"、"i" 和 "m",分别用于指定全局匹配、区分大小写的匹配和多行匹配。
RegExp有两个常用的方法,test()和exec()。使用方式如下:
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中写了一个替换字符串的函数如下:
// 处理&等这些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成的问题应该都能解决。那上面已经列举了很多种正则匹配的情况了。











网友评论