Проверка специальных символов в строке

Я хочу проверить, содержит ли строка специальные символы, такие как! @# $% ^ & *., <>/\ '";:? И возвращать true, если строка содержит по крайней мере один из этих символов.

Я пробовал со следующим регулярным выражением: скрипт:

var format = /^[[email protected]#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]*$/;

if( string.match(format) ){
  return true;
}else{
  return false;
}

Если строка содержит только специальные символы, то она возвращает true, но если строка содержит что-то вроде буквенно-цифровых символов (! Example1,.example2), она возвращает false.

Ответ 1

Я предлагаю использовать функцию RegExp .test() для проверки соответствия шаблону, и единственное, что вам нужно изменить, это удалить начало/конец якоря строки (и квантификатор * также является избыточным) в регулярном выражении:

var format = /[ [email protected]#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]/;
//            ^                                    ^   
document.write(format.test("[email protected](some%text)") + "<br/>");
document.write(format.test("My string with spaces") + "<br/>");
document.write(format.test("MyStringContainingNoSpecialChars"));

Ответ 2

В вашем регулярном выражении используйте ^ и $ чтобы он попытался совместить всю строку. И если вы хотите получить только логическое значение, используйте test вместо match.

var format = /[[email protected]#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]+/;

if(format.test(string)){
  return true;
} else {
  return false;
}

Ответ 3

Разве было бы проще отрицать-альфа-букмекер?

return string.match(/^[^a-zA-Z0-9]+$/) ? true : false;

Ответ 4

var specialChars = "<>@!#$%^&*()_+[]{}?:;|'\"\\,./~'-=";
var checkForSpecialChar = function(string){
 for(i = 0; i < specialChars.length;i++){
   if(string.indexOf(specialChars[i]) > -1){
       return true
    }
 }
 return false;
}

var str = "YourText";
if(checkForSpecialChar(str)){
  alert("Not Valid");
} else {
    alert("Valid");
}

Ответ 5

Удалите символы ^ (начало строки) и $ (конец строки) из регулярного выражения.

var format = /[[email protected]#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]/;

Ответ 6

Вы можете попробовать следующее:

regex = [\W_]

Это определенно поможет вам.