忽略正则表达式中的数字

时间:2017-08-03 21:39:42

标签: javascript regex

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'。 这是字符串的动态部分。

这是一个JsBin:http://jsbin.com/bagegutamu/2/edit?js,console

1 个答案:

答案 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]+"'")
}