正则获取括号、中括号内部信息写法及其实际应用方式

首先基础知识来一波

. 表示除\n之外的任意字符
+ 匹配前面的子表达式一次或多次。
(?<=exp) 是以exp开头的字符串, 但不包含本身。
(?=exp) 就匹配为exp结尾的字符串, 但不包含本身。
注:语句外面的括号不可省略
g 匹配全局

首先是包含括号的形式

const str="1111{kkk}123[1233333]1233331[askdfksd]12(1233)kkk";;
const reg1 = /\((.+?)\)/g;   // () 小括号
const reg2 = /\[(.+?)\]/g;   // [] 中括号
const reg3 = /\{(.+?)\}/g;  // {} 花括号,大括号

// 输出是一个数组
console.log(str.match(reg1)); //['(1233)']
console.log(str.match(reg2));//['[1233333]', '[askdfksd]']
console.log(str.match(reg3));//['{kkk}']

如果不需要包含括号,则使用如下形式:
将(与(?<=()替换,)与(?=))替换,其他括号同理。

const str="1111{kkk}123[1233333]1233331[askdfksd]12(1233)kkk";
var reg1 = /(?<=\()(.+?)(?=\))/g;   // () 小括号
var reg2 = /(?<=\[)(.+?)(?=\])/g;   // [] 中括号
var reg3 = /(?<=\{)(.+?)(?=\})/g;  // {} 花括号,大括号

// 输出是一个数组
console.log(str.match(reg1)); //['1233']
console.log(str.match(reg2));//['1233333', 'askdfksd']
console.log(str.match(reg3));//['kkk']

由此延伸出的实际应用场景,

一、

例如我在rollup.js 中使用了插件 rollup-plugin-require-context
const requireCxt = require.context("./utils", true, /.js/)
// 其中requireCxt.keys() 获取到的数据是 诸如: './debounce.js'

// 我要获取其中的 debounce 作为key,则可通过上述的方案实现,

const reg = /(?<=\.\/)(.+?)(?=.js)/g;   // 去掉 ./ 和 js
const name = item.match(reg) // debounce

二、

小程序中 直接应用pc端的富文本可能会报错,需要正则替换掉会报错的标签
let parseData = this.docBody.replace(/(\t|\n)/g,''); // 去掉所有富文本中的空格,换行等
parseData = parseData.replace(/(<script).*?(\/script>)/, '') // 替换掉会引起报错的script标签。
parseData = parseData.replace(/(<html>)|(<\/html>)/g, '') // 替换掉会引起报错的html标签。
parseData = parseData.replace(/(<body>)|(<\/body>)/g, '') // 替换掉会引起报错的html标签。
parseData = parseData.replace(/(&#xa0;)/g, '') // 替换掉会引起报错的html标签。
parseData = parseData.replace(/(<p><!--\[if !mso])[\s\S]*?(<!\[endif]--><\/p>)/g, '') // 替换掉会引起报错的标签。
parseData = parseData.replace(/(<style).*?(\/style>)/, '') // 替换掉会引起报错的script标签。
// <!--[if gte mso 9]> <![endif]-->
// <!--[if supportMisalignedColumns]--> <!--[endif]-->
parseData = parseData.replace(/(<!--\[if).*?(endif]-->)/g, '') // 替换掉会引起报错的标签。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值