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正则表达式
1 | console.log('This will be replaced: ? ? ?, This will not be replaced: ? ? ü'.replace(/[^\\p{L}\\s]/ugi, '')); |
ES2018中已添加Unicode属性转义符,浏览器支持当前受到限制,node.js从版本10开始支持它们。