关于node.js:过滤掉JavaScript中的所有非字母数字字符

 2020-10-19 

Filtering out all non-alphanumeric characters in JavaScript

我正在尝试从字符串中滤除特定字符。 我认为这不需要太多介绍,因此这里有一些示例。

1
2
3
4
5
6
const filt1 ="This will not be replaced: ? ? ü";
const filt2 ="This will be replaced: ? ? ?";

// Output goal:
// filt1 = This will not be replaced: ? ? ü
// filt2 = This will be replaced:

我将如何去做呢? 我想替换所有未使用任何语言的字符。
我要保留重音字符和Chinse字符之类的东西。
箭头,块等应被过滤掉。

我已经尝试了许多正则表达式过滤器,但没有一个能满足我的要求。
这个效果最好:

1
((?![a-zA-ZàèìòùàèìòùáéíóúyáéíóúYaê????ê?????????????ü?????ü??????????? ]).)*

但是它笨重,并且不包含非重音字母数字字符。
抱歉,如果此帖子的措辞难以阅读。 我已经有一段时间了,我的大脑无法正常运行。


您可以尝试Unicode正则表达式/[^\\p{L}\\s]/ugi

1
console.log('This will be replaced: ? ? ?, This will not be replaced: ? ? ü'.replace(/[^\\p{L}\\s]/ugi, ''));

ES2018中已添加Unicode属性转义符,浏览器支持当前受到限制,node.js从版本10开始支持它们。