使用 JavaScript 删除非字母数字字符
非字母数字表示除字母和数字之外的所有内容。字母表可以是任何语言。
本教程详细说明了我们如何使用 JavaScript 删除非字母数字字符。我们可以通过两种方式使用 replace()
方法。
首先是 str.replace()
,其次是 JSON.stringify(obj).replace()
。replace()
函数在给定字符串中搜索一个值或一个模式(也称为正则表达式),将其替换并输出一个全新的字符串而不修改原始字符串。
请记住
,如果我们想替换字符串中的多个实例,则必须使用带有修饰符的正则表达式。
JSON.stringify()
将对象转换为字符串,生成的字符串遵循 JSON 表示法。如果我们想替换数组所有元素中的非字母数字字符,此方法非常有用。
在这里,我们丢弃除了英文字母(大写和小写)和数字之外的所有内容。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"
现在假设我们有一个包含多个字符串作为元素的数组。在这里,我们可以使用 JSON.stringify()
将它们转换为字符串并根据提供的正则表达式替换它们。
var input = ['123abcABC-_*(!@#$%^&*', 'ABC()_-={}[]:\"<>,.?/~`'];
var stripped_string = JSON.stringify(input).replace(/[\W_]/g, '')
console.log(stripped_string);
输出:
"123abcABCABC"
我们想删除除字母数字以外的所有内容,但这次我们有阿拉伯和英文字母。为了识别阿拉伯字母,我们必须使用 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"
相关文章
在 Angular 中上传文件
发布时间:2023/04/14 浏览次数:71 分类:Angular
-
本教程演示了如何在 Angular 中上传任何文件。我们还将介绍如何在文件上传时显示进度条,并在上传完成时显示文件上传完成消息。
Angular 中所有 Mat 图标的列表
发布时间:2023/04/14 浏览次数:91 分类:Angular
-
本教程演示了在哪里可以找到 Angular 中所有 Mat 图标的列表以及如何使用它们。
Angular 2 中的复选框双向数据绑定
发布时间:2023/04/14 浏览次数:139 分类:Angular
-
本教程演示了如何一键标记两个复选框。这篇有 Angular 的文章将着眼于执行复选框双向数据绑定的不同方法。
在 AngularJS 中重新加载页面
发布时间:2023/04/14 浏览次数:142 分类:Angular
-
我们可以借助 windows.location.reload 和 reload 方法在 AngularJS 中重新加载页面。
在 AngularJs 中设置 Select From Typescript 的默认选项值
发布时间:2023/04/14 浏览次数:78 分类:Angular
-
本教程提供了在 AngularJs 中从 TypeScript 中设置 HTML 标记选择的默认选项的解释性解决方案。
在 AngularJS 中启用 HTML5 模式
发布时间:2023/04/14 浏览次数:150 分类:Angular
-
本文讨论如何在 AngularJS 应用程序上启用带有深度链接的 HTML5 模式。
在 AngularJs 中加载 spinner
发布时间:2023/04/14 浏览次数:107 分类:Angular
-
我们将介绍如何在请求加载时添加加载 spinner,并在 AngularJs 中加载数据时停止加载器。
在 Angular 中显示和隐藏
发布时间:2023/04/14 浏览次数:78 分类:Angular
-
本教程演示了 Angular 中的显示和隐藏。在开发商业应用程序时,我们需要根据用户角色或条件隐藏一些数据。我们必须根据该应用程序中的条件显示相同的数据。
在 Angular 中下载文件
发布时间:2023/04/14 浏览次数:104 分类:Angular
-
本教程演示了如何在 angular 中下载文件。我们将介绍如何通过单击按钮在 Angular 中下载文件并显示一个示例。