除了下划线、破折号和数字之外,删除所有字符和特殊字符

4

目前有一个问题,需要将字符串中的所有字母字符除了'_'、'-'和数字之外都移除。我的字符串如下所示。

let str = '/Anna-Charoline_1985-02-14_London/';

我尝试了以下代码来删除不需要的字符。

let formatted = str.replace(/[D&\/\\#,+()$~%.'":*?<>{}]/g, '');

它没有起作用。 请问是否有人可以帮助我?期望的输出是_1985-02-14_


用一个否定字符类更容易 - /[^0-9_-]/g - CBroe
以上所说的是,您忘记添加a-zA-Z选择器以删除字母。 str.replace(/ [a-zA-ZD&\ / \\#,+()$〜%。'“:*?<> {}] / g,'') - Lumpenstein
1个回答

6

通过使用一个 否定 字符类,这样做会更加容易:

str.replace(/[^0-9_-]/g, '');

所有不是数字0到9、下划线或减号的字符都将被替换为空字符串。

第一个-在这里表示“范围”,因为它处于两个其他字符之间,第二个字符只表示“本身”,因为它位于字符类的末尾。如果它不在开头或结尾之外的任何位置,那么它需要转义为\-


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接