用于检查特殊字符的JavaScript代码

时间:2012-08-10 06:35:34

标签: javascript

我有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;
  }
}

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

6 个答案:

答案 0 :(得分:39)

您可以使用此regular expression

测试字符串
function isValid(str){
 return !/[~`!#$%\^&*+=\-\[\]\\';,/{}|\\":<>\?]/g.test(str);
}

答案 1 :(得分:12)

直接来自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
}

答案 2 :(得分:4)

你在某处写过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控制台中试过这个并且效果很好。

答案 3 :(得分:4)

试试这个。

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

答案 4 :(得分:1)

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

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

答案 5 :(得分:0)

您也可以这样做。

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