我有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
?
答案 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
因为如果它不是大写字母,小写字母,数字或空格,则只能是特殊字符