语法
.
表示除\n之外的任意字符
+
匹配前面的子表达式一次或多次。
(?<=exp)
是以exp开头的字符串, 但不包含本身。
(?=exp)
就匹配为exp结尾的字符串, 但不包含本身。
注:语句外面的括号不可省略
g
匹配全局
实现
- 获取括号的内容,包换括号
var str="123{456}hhh[789]zzz[yyy]bbb(90ba)kkk";
var regex1 = /\((.+?)\)/g; // () 小括号
var regex2 = /\[(.+?)\]/g; // [] 中括号
var regex3 = /\{(.+?)\}/g; // {} 花括号,大括号
// 输出是一个数组
console.log(str.match(regex1)); //['(90ba)']
console.log(str.match(regex2));//['[789]', '[yyy]']
console.log(str.match(regex3));//['{456}']
- 获取括号的内容,不包含括号
也就是将\(
与(?<=\()
替换,\)
与(?=\))
替换,其他括号同理。
var str2="123{456}hhh[789]zzz[yyy]bbb(90ba)kkk";
var regex11 = /(?<=\()(.+?)(?=\))/g; // () 小括号
var regex22 = /(?<=\[)(.+?)(?=\])/g; // [] 中括号
var regex33 = /(?<=\{)(.+?)(?=\})/g; // {} 花括号,大括号
// 输出是一个数组
console.log(str2.match(regex11)); //['90ba']
console.log(str2.match(regex22));//['789', 'yyy']
console.log(str2.match(regex33));//['456']
使用断言遇到的问题
1、移动端项目使用断言时,安卓页面显示无异常,iPhone页面无法加载(空白)。
2、vue的项目中使用断言,打包时异常。