Помогите написать регулярку для номера телефона

Друзья, нужна помощь в написании регулярного выражения.
Есть задача - QLineEdit, в который нужно закинуть валидатор с регуляркой для номера телефона вида 8(900)000-00-00.

Нашел несколько вариантов в интернете, но все они не работают.
Вылетает вот такая ошибка :

QRegularExpressionPrivate::doMatch(): called on an invalid QRegularExpression object (pattern is '\A(?:([+]?[7|8][s-(]?[9][0-9]{2}[s-)]?)?([d]{3})[s-]?([d]{2})[s-]?([d]{2}))\z')

Заранее спасибо за помощь


Ответы (1 шт):

Автор решения: Amgarak

Что-то в этом роде?

#include <iostream>
#include <regex>

using namespace std;

int main() {
    string phoneRegexStr = R"(\+?8\(\d{3}\)\d{3}-\d{2}-\d{2})";
    regex phoneRegex(phoneRegexStr);

    string phoneNumber = "8(123)456-78-90"; //or +8(123)456-78-90

    if (regex_match(phoneNumber, phoneRegex)) {
        cout << "The phone number '" << phoneNumber << "' is valid." << endl;
    }
    else {
        cout << "The phone number '" << phoneNumber << "' is invalid." << endl;
    }

    return 0;
}
→ Ссылка