let str1 = 'Foo Bar (baz) Resu'
let str2 = 'Foo Bar 1234 (baz) Resu'
let pattern = /(\D+).\((.*)\).Res.*/
console.log(str1.match(pattern))
console.log(str2.match(pattern))
我尝试捕捉(...)之前的所有内容,除了数字(如果有的话)。我还需要(...)的内容。 在第一种情况下,它应该工作。我有'Foo Bar'和'baz'。 这是字符串的动态部分。
答案 0 :(得分:1)
您可以使用
/^(\D+?)[\s\d]*\(([^()]*)\)/
请参阅regex demo
<强>详情
^
- 字符串开头(\D+?)
- 第1组:尽可能少的1位或多位非数字符号[\s\d]*
- 0+空格或/和数字\(
- 文字(
([^()]*)
- 第2组:除(
和)
以外的0个或多个字符\)
- 文字)
。
let str1 = 'Foo Bar (baz) Resu'
let str2 = 'Foo Bar 1234 (baz) Resu'
let pattern = /^(\D+?)[\s\d]*\(([^()]*)\)/
let m1 = str1.match(pattern)
if (m1) {
console.log("'"+m1[1]+"';'"+m1[2]+"'")
}
let m2 = str2.match(pattern)
if (m2) {
console.log("'"+m2[1]+"';'"+m2[2]+"'")
}