如何使用正则表达式验证我的文件输入名称?

时间:2018-12-10 15:20:46

标签: javascript angularjs regex

我似乎无法弄清楚为什么我的以下代码无法正确运行。我不确定问题是否来自匹配函数语法或正则表达式。任何帮助表示赞赏。

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

1 个答案:

答案 0 :(得分:2)

答案:

问题是您将感叹号放在错误的位置。试试这个:

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

说明:

感叹号为您提供与给定值相反的布尔值。那就是:如果某事“真实”会给你false,如果某事“虚假”会给你true

有关真/假的更多信息,这在许多编程语言中都是非常重要的概念:https://developer.mozilla.org/en-US/docs/Glossary/Truthy

您的变量valid是一个RegEx对象,并且永远是真实的。因此,!valid将始终为false

您最初编写代码的方式基本上是在说:

  

如果文件名匹配“ false”

您想说的是:

  

如果此语句为假:“文件名与此RegEx匹配”