'(hello) world this is (hi) text'.match('((.*?))')
catspeake
浏览 163回答 3
3回答
猛跑小猪
你可以尝试: /\([^\)]+\)/g\(: 转义字符[^\)]+: 一个或多个字符(包括符号)直到)char。\): 转义字符g标志:搜索所有巧合const regex = /\([^\)]+\)/g;const str = `(hello) world this is (hi) text`;console.log( str.match(regex) // this returns an string array .map(i => i.slice(1, -1)) // remove first and last char);尖端:关于第 2 点,您可以更改为[\)]*对零个或多个字符生效。如果你只需要字符串,你可以使用\w+or \w*。如果你只需要的话,你可以使用/\(\b\w+\b\)/g
除了使用组或match结果的后处理之外,您还可以使用match前瞻/后视的单个正则表达式:var text = " (hello) world this is (hi) text"var output = text.match(/(?<=\().*?(?=\))/g)console.log(output)输出:[ 'hello', 'hi' ]解释:(?<=...)...积极回顾。匹配在 be 之前...,但...不包含在匹配中(?<=\()... 正面回顾(角色.*...任何字符的零次或多次.*?...的非贪婪版本.*(?=...)...积极的前瞻,比赛之后是...但...不包括在比赛中(?=\)))...角色的正面前瞻/.../g...g是全局标志,匹配找到所有,而不仅仅是第一个,出现不要忘记转义“特殊字符”,例如括号
'(hello) world this is (hi) text'.match(/\([\w]*\)/g)这将返回[ "(hello)", "(hi)" ],您可以运行另一个解析函数来删除那个额外的括号。const text = '(hello) world this is (hi) text';const list = text.match(/\([\w]*\)/g);const parsed = list.map(item => item.replace(/\(|\)/g, ''));console.log(parsed);