@DOMandJQUERY

Что не так с RegExp Javascript?

Что не так с регулярным выражением? Почему выдает ошибку в лог

index.js Uncaught SyntaxError: Invalid regular expression: /^(?:@|(?:https?://)?(?:www.)testdomain.com?/(w+)/: Unterminated group (at index.js)
at RegExp ()
at getTestIndex (index.js)
at index.js

function getTestIndex(domain, string) {
    var result = RegExp("^(?:@|(?:https?:\/\/)?(?:www\.)" + domain + "?\(\w+)\/?$").exec(string);
    return result[1];
}

console.log(getTestIndex('testdomain.com', 'https://testdomain.com/testindex'));
  • Вопрос задан
  • 161 просмотр
Решения вопроса 1
Henxed
@Henxed
function getTestIndex(domain, string) {
    const regex = new RegExp(`^(?:@|(?:https?://)?(?:www\\.)?${domain}/?(\\w+)?)$`);
    const result = regex.exec(string);
    return result ? result[1] : null;
}

console.log(getTestIndex('testdomain.com', 'https://testdomain.com/testindex'));

Были лишнее скобки и нехватка слешов в регулярке. Плюс лучше иметь проверку, что если не совпадает, то выкидывало null
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
исправьте "?\(\w+)\/?$"
на
"?\\(\w+)\/?$"
и та ошибка исчезнет. Но это не значит, что регулярное выражение станет работать, как надо
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы