Как проверить, что данная строка содержит некоторые указанные специальные символы, существующие или нет в javascript?

#javascript

#javascript

Вопрос:

У меня есть строка ввода, когда пользователь вводит данные в строку, а затем выясняет, содержит строка некоторые указанные (!@ # $%) специальные символы, найдены или нет. Следующие строковые значения выводятся следующим образом

  string str="Mn@";    --> true
 string str="m@*";    --> false
 string str="@Mn";    --> true
 string str="Mnamp;";    --> false
 string str="@";      --> true
 string str="M";      --> false
 string str="*";      --> false
 string str=" ";      --> false
 string str=" Mn";    --> false
 string str="M *";    --> false
 string str="m@ ";    --> false    
  

Ответ №1:

Используйте регулярное выражение и поместите все символы, которые вы хотите найти, в набор символов:

 const pattern = /[!@#$%]/;
console.log(pattern.test('Mn@'));
console.log(pattern.test('@Mn'));
console.log(pattern.test('Mnamp;'));
console.log(pattern.test('@'));
console.log(pattern.test('M'));
console.log(pattern.test('*'));  

Для вашего нового вопроса добавьте отрицательный предварительный просмотр для пробела, если вы хотите убедиться, что текст не содержит пробела:

 const pattern = /^(?!.* )[!@#$%]/;
console.log(pattern.test('Mn@'));
console.log(pattern.test('@Mn'));
console.log(pattern.test('Mnamp;'));
console.log(pattern.test('@'));
console.log(pattern.test('M'));
console.log(pattern.test('*'));
console.log(pattern.test(' '));
console.log(pattern.test(' Mn'));
console.log(pattern.test('M *'));
console.log(pattern.test('m@ *'));  

Комментарии:

1. /[!@#$%]/ этот шаблон не учитывает пробелы. Я хочу проверить все специальные символы, кроме!@# $% these.

2. Лучше всего заранее сформулировать свою проблему в вопросе, прежде чем начнут поступать ответы — если вы хотите исключить текст с пробелами, отрицательный прогноз для пробела в шаблоне.

Ответ №2:

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

 var spChar = '!@#$%';

function isIncludeSpecialChar(stringVal){
  return spChar.split('').some((character) => stringVal.includes(character));
}
console.log(isIncludeSpecialChar('Mn@'));
console.log(isIncludeSpecialChar('@Mn'));
console.log(isIncludeSpecialChar('Mnamp;'));
console.log(isIncludeSpecialChar('@'));
console.log(isIncludeSpecialChar('M'));
console.log(isIncludeSpecialChar('*'));  

Ответ №3:

Вы можете использовать функции test и match в JS regex. тест покажет вам, присутствует символ или нет, а сопоставление покажет, какой символ присутствует в строке

 var str1="Mn@";
console.log(/[!@#$%]/.test(str1))
console.log(str1.match(/[!@#$%]/))