Информация об изменениях

Сообщение Re[2]: $> от 12.07.2020 4:43

Изменено 12.07.2020 4:47 Lazytech

Re[2]: $>
Здравствуйте, Михaил, Вы писали:

М>имхо должно быть достаточно убирать все не-alphanumeric characters для коротких ников.

М>Где-то регекс, который подсвечивает цитирование, трактует этот символ как конец строки цитирования, чем товарищ и воспользовался.

Предлагаю применить еще более радикальное решение вроде этого:
function validateInput(inputString, inputName, minLength, maxLength, pattern) {
    // Validates either username or password 
    let warningText = ''; // Empty string, otherwise it may be undefined !!!
    if (inputString.length < minLength) {
        warningText = inputName + ' may consist of at least ' + minLength + ' character(s)!'          
    }
    if (inputString.length > maxLength) {
        warningText = inputName + ' may consist of at most ' + maxLength + ' characters!';
    }
    const re = new RegExp(pattern);
    if (!re.test(inputString)) {
        // Modify displayed text as necessary.
        warningText = inputName + 
            ' may consist of Latin characters, digits, and underscores only.';            
    }
    if (warningText === '') {
        return true;
    }
    if (inputName === 'Username') {
        username = '';
        showUsernameWarning(warningText);
    } else if (inputName === 'Password') {
        password = '';
        showPasswordWarning(warningText);
    }
       
    return false;
}

function validateUsername() {
    return validateInput(username, 'Username', 1, 40, "^([A-Za-z0-9_]{1,40})$");
}

А то развлекаются, понимаете ли.
Re[2]: $>
Здравствуйте, Михaил, Вы писали:

М>имхо должно быть достаточно убирать все не-alphanumeric characters для коротких ников.

М>Где-то регекс, который подсвечивает цитирование, трактует этот символ как конец строки цитирования, чем товарищ и воспользовался.

Предлагаю применить еще более радикальное решение вроде этого:
  JavaScript inside
function validateInput(inputString, inputName, minLength, maxLength, pattern) {
    // Validates either username or password 
    let warningText = ''; // Empty string, otherwise it may be undefined !!!
    if (inputString.length < minLength) {
        warningText = inputName + ' may consist of at least ' + minLength + ' character(s)!'          
    }
    if (inputString.length > maxLength) {
        warningText = inputName + ' may consist of at most ' + maxLength + ' characters!';
    }
    const re = new RegExp(pattern);
    if (!re.test(inputString)) {
        // Modify displayed text as necessary.
        warningText = inputName + 
            ' may consist of Latin characters, digits, and underscores only.';            
    }
    if (warningText === '') {
        return true;
    }
    if (inputName === 'Username') {
        username = '';
        showUsernameWarning(warningText);
    } else if (inputName === 'Password') {
        password = '';
        showPasswordWarning(warningText);
    }
       
    return false;
}

function validateUsername() {
    return validateInput(username, 'Username', 1, 40, "^([A-Za-z0-9_]{1,40})$");
}

А то развлекаются, понимаете ли.