如何在 JavaScript 中从字符串中删除特殊字符

JavaScript10个月前更新 admin
1,781 0

要从字符串中删除所有特殊字符,请对字符串调用 Replace() 方法,传递白名单正则表达式和空字符串作为参数,即 str.replace(/^a-zA-Z0-9 ]/g, ‘ ‘)。 Replace() 方法将返回一个不包含任何特殊字符的新字符串。

例如:

const str = ‘milk and @#$%&!bread’;
const noSpecialChars = str.replace(/[^a-zA-Z0-9 ]/g, ”);
console.log(noSpecialChars); // milk and bread

String Replace() 方法在字符串中搜索值(子字符串或正则表达式),并返回一个新字符串,其中该值被子字符串替换。 它不会修改原始字符串。

正则表达式中的方括号([])表示字符类。 只有包含在其中的字符才会被匹配。

但将脱字号 (^) 作为方括号中的第一个字符后,只有方括号内未包含的字符才会匹配。

在插入符号之后,我们指定:

  • 小写 (a-z) 和大写 (A-Z) 字母的范围。
  • 0-9 的数字范围。
  • 空格字符 (‘ ‘)。

因此,正则表达式匹配任何不是小写或大写字母、数字或空格的字符,并且replace()方法返回一个新字符串,其中所有这些字符都从原始字符串中删除。

g(全局)标志指定模式的每次出现都应该匹配。

如果我们不传递全局标志,则只会匹配并删除字符串中的第一个特殊字符。

const str = ‘milk and @#$%&!bread’;
// 👇 No ‘g’ flag in regex
const noSpecialChars = str.replace(/[^a-zA-Z0-9 ]/, ”);
// 👇 Only first special character removed
console.log(noSpecialChars); // milk and #$%&!bread

使用 \w 字符缩短正则表达式

我们可以使用 \w 字符稍微缩短这个正则表达式。

const str = ‘milk and @#$%&!bread’;
const noSpecialChars = str.replace(/[^\w ]/g, ”);
console.log(noSpecialChars); // milk and bread

\w 字符匹配大写和小写拉丁字母、数字和下划线。

由于 \w 匹配下划线,因此不能单独使用它来从字符串中删除此特殊字符。

const str = ‘_milk_ _and _@#$%&!_bread_’;
const noSpecialChars = str.replace(/[^\w ]/g, ”);
console.log(noSpecialChars); // _milk_ _and_ _bread_

我们需要一个不同的正则表达式来删除下划线:

const str = ‘_milk_ _and _@#$%&!_bread_’;
const noSpecialChars = str.replace(/([^\w ]|_)/g, ”);
console.log(noSpecialChars); // milk and bread

管道符号 (|) 允许在字符串中匹配两种模式中的任何一种,类似于字符类。 要使用管道符号,我们需要将两个模式括在括号((和))中,这就是我们所做的。

 

© 版权声明

相关文章

暂无评论

暂无评论...