Как я могу проверить правильность ввода имени моего файла с помощью регулярных выражений? - PullRequest
0 голосов
/ 10 декабря 2018

Я не могу понять, почему мой код ниже работает неправильно.Я не уверен, исходит ли проблема от синтаксиса функции соответствия или регулярного выражения.Любая помощь приветствуется.

$scope.fileSelected = function (file) {
    var valid = "/^[0-9a-zA-Z]+$/";
    if (file.name.match(!valid)) {
        alert("File name contains invalid characters. (#, &, %, etc.)");
    }
}

1 Ответ

0 голосов
/ 10 декабря 2018

Ответ:

Проблема в том, что вы поставили восклицательный знак не в том месте.Попробуйте это:

if (!file.name.match(valid)){

Объяснение:

Восклицательный знак дает логическое значение, противоположное заданному значению.То есть: если что-то «правдивое», оно дает вам false, а если что-то «ложное», оно дает вам true.

Вот дополнительная информация о правдивости / ложности, которая является очень важной концепциейво многих языках программирования: https://developer.mozilla.org/en-US/docs/Glossary/Truthy

Ваша переменная valid является объектом RegEx и всегда будет правдивой.Следовательно, !valid всегда будет false.

То, как вы изначально написали свой код, в основном говорит:

Если имя файла соответствует «false»

То, что вы хотите сказать, это:

Если это утверждение ложно: «имя файла соответствует этому RegEx»

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