#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(/[!@#$%]/))