使用 JavaScript 删除非字母数字字符
- 使用 JavaScript 删除非字母数字字符
-
在 JavaScript 中使用
JSON.stringify()
转换字符串 -
在 JavaScript 中使用
\u0600-\u06FF
来删除除字母数字以外的内容
非字母数字表示除字母和数字之外的所有内容。字母表可以是任何语言。
本教程详细说明了我们如何使用 JavaScript 删除非字母数字字符。我们可以通过两种方式使用 replace()
方法。
首先是 str.replace()
,其次是 JSON.stringify(obj).replace()
。replace()
函数在给定字符串中搜索一个值或一个模式(也称为正则表达式),将其替换并输出一个全新的字符串而不修改原始字符串。
请记住,如果我们想替换字符串中的多个实例,则必须使用带有修饰符的正则表达式。
JSON.stringify()
将对象转换为字符串,生成的字符串遵循 JSON 表示法。如果我们想替换数组所有元素中的非字母数字字符,此方法非常有用。
使用 JavaScript 删除非字母数字字符
在这里,我们丢弃除了英文字母(大写和小写)和数字之外的所有内容。g
修饰符表示全局,i
匹配不区分大小写。
var input = '123abcABC-_*(!@#$%^&*()_-={}[]:\"<>,.?/~`';
var stripped_string = input.replace(/[^a-z0-9]/gi, '');
console.log(stripped_string);
输出:
"123abcABC"
我们可以优化上面代码中使用的正则表达式,将其替换为/[\W]/g
,其中\W
等价于 [^0-9a-zA-Z]
。因此,我们的最终正则表达式将是 /[\W_]/g
,因为我们从 input
字符串中删除了 underscore
。
检查下面给出的代码。
var input = '123abcABC-_*(!@#$%^&*()_-={}[]:\"<>,.?/~`';
var stripped_string = input.replace(/[\W_]/g, '')
console.log(stripped_string);
输出:
"123abcABC"
在 JavaScript 中使用 JSON.stringify()
转换字符串
现在假设我们有一个包含多个字符串作为元素的数组。在这里,我们可以使用 JSON.stringify()
将它们转换为字符串并根据提供的正则表达式替换它们。
var input = ['123abcABC-_*(!@#$%^&*', 'ABC()_-={}[]:\"<>,.?/~`'];
var stripped_string = JSON.stringify(input).replace(/[\W_]/g, '')
console.log(stripped_string);
输出:
"123abcABCABC"
在 JavaScript 中使用 \u0600-\u06FF
来删除除字母数字以外的内容
我们想删除除字母数字以外的所有内容,但这次我们有阿拉伯和英文字母。为了识别阿拉伯字母,我们必须使用 Unicode 的相对块范围,\u0600-\u06FF
。
var input = 'ن$%^&*(ص ع___ربي-abc123_*(!@#$%^&*()_-={}[]:\"<>,.?/~`';
var stripped_string = input.replace(/[^0-9a-z\u0600-\u06FF]/gi, '')
console.log(stripped_string);
输出:
"نصعربيabc123"
多想一下,想象一下使用多种语言并从 Unicode 中为每种语言搜索相对的块范围。那会很耗时,对吧?
在这种情况下,/[^\p{L}\d]/gu
非常有用。在这里,\p{L}
查找来自任何语言的字母,而\d
查找数字。
g (global)
全局替换,而 Unicode 转义序列使用 u (Unicode)
标识。
在这里,^
符号用于否定给定的字符集。因此,最终的正则表达式 /[^\p{L}\d]/gu
意味着替换所有否定提供的字符集的内容。
function nonAlphaNumericRemoval(input) {
return input.replace(/[^\p{L}\d]/gu, '')
}
input_string = [
'#$asdé5kfjdk?',
'%^uQjoFß^ßI$jI',
'*(无论 3 如何?!',
'[фв@#ео1]'
]
for (var input of input_string) {
console.log(nonAlphaNumericRemoval(input))
}
输出:
"asdé5kfjdk"
"uQjoFßßIjI"
"无论 3 如何"
"фвео1"