Подтвердить что ты не робот

Код 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;
  }
}

Предположим, я хочу загрузить файл desktop.zip с любого компьютера с Linux/Windows. Значение chkfile.value равно desktop.zip в Firefox, но в Chrome значение chkfile.value равно c://fakepath/desktop.zip. Как мне избавиться от c://fakepath/ от chkfile.value?

4b9b3361

Ответ 1

Вы можете протестировать строку, используя это регулярное выражение:

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

Ответ 2

Непосредственно из 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
}

Ответ 3

Вы пишете 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;
}

Я пробовал это на своей хром-консоли, и он работал хорошо.

Ответ 4

Попробуйте этот.

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

Ответ 5

Если вы не хотите включать какой-либо специальный символ, попробуйте этот простой способ проверить специальные символы, используя RegExp \W Metacharacter.

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

Ответ 6

Вы также можете сделать это таким образом.

specialRegex = /[^A-Z a-z0-9]/ specialRegex.test('test!') // evaluates to true Потому что, если это не заглавная буква, строчная буква, число или пробел, это может быть только специальный символ