如何使用正则匹配包含特殊符号的字符串片段?
正则匹配方案
原有正则失效原因
你使用的\w+$只能匹配字符串末尾由字母、数字、下划线组成的连续内容,你需要匹配的-[[message]]-包含-、[、]等非\w字符,因此无法命中。
匹配完整片段(包含-[[和]]-)
推荐使用以下正则:-\[\[[^\]]+\]\]-
语法说明:
-匹配字面量横杠\[转义匹配字面量[(方括号在正则中是特殊字符,必须转义)[^\]]+匹配1个及以上非]的任意字符,覆盖中间的message内容\]转义匹配字面量]- 末尾
-匹配收尾横杠
如果你的场景中message内部可能存在]字符,可以改用非贪婪匹配写法:-\[\[.+?\]\]-
单独提取中间的message内容
如果不需要外层的符号,仅需要提取包裹的文本,给中间内容加捕获组即可:-\[\[([^\]]+)\]\]-
匹配后取捕获组1的内容即可直接得到message。
代码示例(JavaScript)
const rawStr = 'This is a test -[[message]]-' // 匹配完整片段 const fullMatchReg = /-\[\[[^\]]+\]\]-/ console.log(rawStr.match(fullMatchReg)[0]) // 输出:-[[message]]- // 提取中间内容 const groupMatchReg = /-\[\[([^\]]+)\]\]-/ console.log(rawStr.match(groupMatchReg)[1]) // 输出:message
内容的提问来源于stack exchange,提问作者Taha Sami
相关产品推荐
相关产品推荐

