28

我有 JavaScript 代码来检查字符串中是否有特殊字符。该代码在 Firefox 中运行良好,但在 Chrome 中却不行。在 Chrome 中,即使字符串不包含特殊字符,它也会表示它包含特殊字符。

var iChars = "~`!#$%^&*+=-[]\\\';,/{}|\":<>?";

for (var i = 0; i < chkfile.value.length; i++)
{
  if (iChars.indexOf(chkfile.value.charAt(i)) != -1)
  {
     alert ("File name has special characters ~`!#$%^&*+=-[]\\\';,/{}|\":<>? \nThese are not allowed\n");
     return false;
  }
}

假设我想desktop.zip从任何 Linux/Windows 机器上传文件。的值chkfile.valuedesktop.zipFirefox 中,但在 Chrome 中的chkfile.value值为c://fakepath/desktop.zip。我该如何c://fakepath/摆脱chkfile.value

4

6 回答 6

48

您可以使用此正则表达式测试字符串:

function isValid(str){
 return !/[~`!#$%\^&*+=\-\[\]\\';,/{}|\\":<>\?]/g.test(str);
}
于 2012-08-10T07:05:06.107 回答
13

直接来自w3schools网站:

   var str = "The best things in life are free";
   var patt = new RegExp("e");
   var res = patt.test(str);

要将他们的示例与正则表达式结合起来,您可以执行以下操作:

function checkUserName() {
    var username = document.getElementsByName("username").value;
    var pattern = new RegExp(/[~`!#$%\^&*+=\-\[\]\\';,/{}|\\":<>\?]/); //unacceptable chars
    if (pattern.test(username)) {
        alert("Please only use standard alphanumerics");
        return false;
    }
    return true; //good user input
}
于 2014-04-28T15:03:54.040 回答
11

试试这个。

function containsSpecialCharacters(str){
    var regex = /[ !@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]/g;
	return regex.test(str);
}

于 2017-02-13T12:09:47.723 回答
5

你在什么return true地方写的吗?你应该已经写了它,否则函数什么也不返回,程序也可能认为它是错误的。

function isValid(str) {
    var iChars = "~`!#$%^&*+=-[]\\\';,/{}|\":<>?";

    for (var i = 0; i < str.length; i++) {
       if (iChars.indexOf(str.charAt(i)) != -1) {
           alert ("File name has special characters ~`!#$%^&*+=-[]\\\';,/{}|\":<>? \nThese are not allowed\n");
           return false;
       }
    }
    return true;
}

我在我的 chrome 控制台中尝试了这个,效果很好。

于 2012-08-10T06:49:25.863 回答
2

你也可以这样做。

specialRegex = /[^A-Z a-z0-9]/ specialRegex.test('test!') // evaluates to true 因为如果它不是大写字母、小写字母、数字或空格,它只能是一个特殊字符

于 2019-09-20T18:04:14.527 回答
1

如果您不想包含任何特殊字符,请尝试使用 RegExp \W元字符检查特殊字符的这种简单方法。

var iChars = "~`!#$%^&*+=-[]\\\';,/{}|\":<>?";
if(!(iChars.match(/\W/g)) == "") {
    alert ("File name has special characters ~`!#$%^&*+=-[]\\\';,/{}|\":<>? \nThese are not allowed\n");
    return false;
}
于 2016-06-17T18:52:05.140 回答