игнорировать цифры в регулярном выражении

1
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 ответ

1
Лучший ответ

Вы можете использовать

/^(\D+?)[\s\d]*\(([^()]*)\)/

См. Демо-версию regex

подробности

  • ^ - начало строки
  • (\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]+"'")
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню