Проверка специальных символов в строке
Я хочу проверить, содержит ли строка специальные символы, такие как! @# $% ^ & *., <>/\ '";:? И возвращать 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_]
Это определенно поможет вам.