diff --git a/core/coreutils.cpp b/core/coreutils.cpp index a17b38aa8..b50940045 100644 --- a/core/coreutils.cpp +++ b/core/coreutils.cpp @@ -271,9 +271,13 @@ bool CoreUtils::isAuthConfigFile( const QString filePath ) bool CoreUtils::isValidName( const QString &name ) { - static QRegularExpression reForbiddenmNames( R"([@#$%^&*\(\)\{\}\[\]\\\/\|\+=<>~\?:;,`\'\"]|^[\s^\.].*$|^CON$|^PRN$|^AUX$|^NUL$|^COM\d$|^LPT\d|^support$|^helpdesk$|^merginmaps$|^lutraconsulting$|^mergin$|^lutra$|^input$|^sales$|^admin$)", QRegularExpression::CaseInsensitiveOption ); + static QRegularExpression reForbiddenmNames( R"(^[\s^\.].*$|^CON$|^PRN$|^AUX$|^NUL$|^COM\d$|^LPT\d|^support$|^helpdesk$|^merginmaps$|^lutraconsulting$|^mergin$|^lutra$|^input$|^sales$|^admin$)", QRegularExpression::CaseInsensitiveOption ); + static QRegularExpression reValidCharacters( R"(^[\w\s\-\.]+$)" ); + QRegularExpressionMatch matchForbiddenNames = reForbiddenmNames.match( name ); - return !matchForbiddenNames.hasMatch(); + QRegularExpressionMatch matchValidCharacters = reValidCharacters.match( name ); + + return !matchForbiddenNames.hasMatch() && matchValidCharacters.hasMatch(); } QString CoreUtils::nameAbbr( const QString &name, const QString &email )