检查 String 是否包含 JavaScript 中的特殊字符
Check if String contains Special Characters in JavaScript
要检查字符串是否包含特殊字符,请test()
在匹配任何特殊字符的正则表达式上调用该方法。
如果字符串至少包含 1 个特殊字符,则该test()
方法将返回,否则返回。true
false
索引.js
function containsSpecialChars(str) { const specialChars = /[`!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?~]/; return specialChars.test(str); } console.log(containsSpecialChars('hello!')); // 👉️ true console.log(containsSpecialChars('abc')); // 👉️ false console.log(containsSpecialChars('one two')); // 👉️ false if (containsSpecialChars('hello!')) { // 👇️ this runs console.log('✅ string contains special characters'); } else { console.log('⛔️ string does NOT contain special characters'); }
如果您认为
spaces
是特殊字符,请在方括号之间添加一个空格[]
。索引.js
// 👇️ with space as a special character // 👇️ const specialChars = /[ `!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?~]/;
我们使用
RegExp.test
方法来检查字符串是否包含特殊字符。
true
如果正则表达式在字符串中匹配,则该方法返回,false
否则返回。正斜杠标记/ /
正则表达式的开始和结束。
方括号[]
称为字符类,匹配方括号之间的任何字符。
如果您不认为方括号之间的任何字符是特殊字符,请将其删除。
或者,您可以使用该Array.some()
方法。
检查字符串是否包含特殊字符使用Array.some()
这是一个四步过程:
- 定义一个包含所有特殊字符的字符串。
- 使用该
String.spit()
方法在每个字符上拆分字符串。 - 使用该
Array.some()
方法迭代特殊字符数组。 - 检查提供的字符串中是否包含每个特殊字符。
索引.js
function containsSpecialChars(str) { const specialChars = `\`!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?~`; const result = specialChars.split('').some(specialChar => { if (str.includes(specialChar)) { return true; } return false; }); return result; } console.log(containsSpecialChars('hello!')); // 👉️ true console.log(containsSpecialChars('abc')); // 👉️ false console.log(containsSpecialChars('one two')); // 👉️ false if (containsSpecialChars('hello!')) { // 👇️ this runs console.log('✅ string contains special characters'); } else { console.log('⛔️ string does NOT contain special characters'); }
我们定义了一个包含所有特殊字符的字符串。您可以根据需要调整字符串。
然后我们使用该String.split()
方法将字符串拆分为一个特殊字符数组。
索引.js
// [ // '`', '!', '@', '#', '$', '%', // '^', '&', '*', '(', ')', '_', // '+', '-', '=', '[', ']', '{', // '}', ';', "'", ':', '"', '\\', // '|', ',', '.', '<', '>', '/', // '?', '~' // ] console.log(specialChars.split(''));
我们使用Array.some()
方法迭代特殊字符数组。
我们传递给方法的函数
some()
被调用每个元素(特殊字符),直到它返回一个真值或遍历整个数组。在每次迭代中,我们检查当前特殊字符是否包含在提供的字符串中。
如果字符串包含至少 1 个特殊字符,则该some()
方法返回true
并短路。
如果字符串不包含任何特殊字符,该some()
方法将遍历整个数组并返回false
。
我个人的偏好是在这种情况下使用正则表达式。这两种方法都有点难以阅读,但是,正则表达式选项更直接一些。
# 额外资源
您可以通过查看以下教程来了解有关相关主题的更多信息: