3 回答
TA贡献1858条经验 获得超8个赞
你可以尝试: /\([^\)]+\)/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
TA贡献1831条经验 获得超9个赞
除了使用组或match
结果的后处理之外,您还可以使用match
前瞻/后视的单个正则表达式:
var text = " (hello) world this is (hi) text"
var output = text.match(/(?<=\().*?(?=\))/g)
console.log(output)
输出:
[ 'hello', 'hi' ]
解释:
(?<=...)
...积极回顾。匹配在 be 之前...
,但...
不包含在匹配中(?<=\()
... 正面回顾(
角色.*
...任何字符的零次或多次.*?
...的非贪婪版本.*
(?=...)
...积极的前瞻,比赛之后是...
但...
不包括在比赛中(?=\))
)
...角色的正面前瞻/.../g
...g
是全局标志,匹配找到所有,而不仅仅是第一个,出现不要忘记转义“特殊字符”,例如括号
TA贡献1895条经验 获得超7个赞
'(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);
添加回答
举报