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.zipLinux/Windows マシンからファイルをアップロードしたいとします。の値chkfile.valuedesktop.zipFirefox では is ですが、Chrome では の値はchkfile.valueisc://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 Web サイトから直接:

   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 に答える