Регулярные выражения js не работает
str.match(/^(.+?)[(\\\()(\$\$)]?/)[1]
Подскажите, что не так? Проблема вот в чем. Дана строка. Я должен вывести с начала строки столько символов, пока после них не будет либо сочетание \(, либо $$, либо конец строки. Нужно это строку выдать из первого кармана. Я плохо разбираюсь в регулярных выражениях, поэтому не могу понять, почему мне, например, в строке "Hello\(" или подобных выдается не "Hello", а только первый символ, т.е. "H". Помогите исправить регулярное выражение.
Ответы (1 шт):
Автор решения: Grundy
→ Ссылка
Проблема заключается в использовании [] в этом случае символы внутри скобок рассматриваются как альтернативы.
Вместо этого можно применить positive lookahead, в котором перечислить альтернативы через |,
/^(.+?)(?=\\\(|\$\$|$)/
console.log('Hello\\('.match(/^(.+?)(?=\\\(|\$\$|$)/)[1])