Как я могу использовать RegExp для проверки строки? - PullRequest
0 голосов
/ 25 января 2020

Создайте функцию, для которой задана строка, сохраняются только буквы AZ (верхний и нижний регистр), 0-9 цифр и пробельные символы. Кроме того, возвращает «Не строка!» если тип записи не является строкой.

Пока у меня есть:


function notAString(string) {
    var regex = new RegExp(`^(?=.*[A-Za-z])\d\s`, 'g');

    if (regex.test(string)) {
        return "String!";

    } else {
        return "Not a string!";
    }
}

Я получаю только "Не строка!" возвращается, даже если это строка.

Ответы [ 2 ]

0 голосов
/ 25 января 2020

Ваш RegEx должен быть ^[A-Za-z 0-9]*$:

Где

^ утверждает позицию в начале строки

A-Z соответствует одному символу в диапазоне между A (индекс 65) и Z (индекс 90) (с учетом регистра)

a-z соответствует одному символу в диапазоне между (индекс 97) и z (индекс 122) буквально (с учетом регистра)

соответствует пробелу

0-9 соответствует одному символу в диапазоне от 0 (индекс 48) до 9 (индекс 57) буквально (с учетом регистра)

* квантификатор - соответствует от нуля до неограниченного количества раз, столько раз, сколько возможно, возвращая по мере необходимости

$ утверждает позицию в конце строка

Вы также можете использовать Условный (троичный) оператор , чтобы упростить решение следующим образом:

function notAString(string) {
  var regex = new RegExp(`^[A-Za-z 0-9]*$`, 'g');
  return regex.test(string)? 'String!' : 'Not a string!';
}
console.log(notAString('123 Test string')); // String!
console.log(notAString('Test@string'));     // Not a string!
0 голосов
/ 25 января 2020

Я не уверен, что многие люди согласятся с вашим определением строки! Но на основе описанной вами последовательности это будет ^[A-Za-z0-9\s]+$

Проверьте это на https://regex101.com/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...