我似乎无法弄清楚为什么我的以下代码无法正确运行。我不确定问题是否来自匹配函数语法或正则表达式。任何帮助表示赞赏。
$scope.fileSelected = function (file) {
var valid = "/^[0-9a-zA-Z]+$/";
if (file.name.match(!valid)) {
alert("File name contains invalid characters. (#, &, %, etc.)");
}
}
答案 0 :(得分:2)
答案:
问题是您将感叹号放在错误的位置。试试这个:
if (!file.name.match(valid)){
说明:
感叹号为您提供与给定值相反的布尔值。那就是:如果某事“真实”会给你false
,如果某事“虚假”会给你true
。
有关真/假的更多信息,这在许多编程语言中都是非常重要的概念:https://developer.mozilla.org/en-US/docs/Glossary/Truthy
您的变量valid
是一个RegEx对象,并且永远是真实的。因此,!valid
将始终为false
。
您最初编写代码的方式基本上是在说:
如果文件名匹配“ false”
您想说的是:
如果此语句为假:“文件名与此RegEx匹配”