如何从字符串中删除除字母、数字、空格、感叹号和问号之外的所有内容

How to remove everything but letters, numbers, space, exclamation and question mark from string?

本文关键字:感叹 空格 字符串 删除 数字      更新时间:2023-09-26

如何删除除之外的所有内容

字符串中的字母、数字、空格、感叹号、问号?

该方法支持国际语言(UTF-8)非常重要。

您可以使用regex

myString.replace(/[^'w's!?]/g,'');

这将替换除单词字符、空格、感叹号或问题之外的所有内容。

字符类:'w代表"字字符",通常为[A-Za-z0-9_]。请注意包含下划线和数字。

's代表"空白字符"。它包括CCD_ 4。

如果不需要下划线,可以只使用[A-Za-z0-9]

myString.replace(/[^A-Za-z0-9's!?]/g,'');

对于unicode字符,可以向表达式中添加类似'u0000-'u0080的内容。这将排除该unicode范围内的所有字符。您必须指定不希望删除的字符的范围。你可以在Unicode地图上看到所有的代码。只需添加您想要保留的字符或一系列字符即可。

例如:

myString.replace(/[^A-Za-z0-9's!?'u0000-'u0080'u0082]/g,'');

这将允许前面提到的所有字符,范围从'u0000-'u0080'u0082。它将删除'u0081

到目前为止发布的两个答案都省略了问号。我会对他们发表评论,但还没有足够的代表性。

David是正确的,sachleen的正则表达式将留下下划线。rcdmk的regex经过如下修改,可以做到这一点,尽管如果你关心国际字符,事情可能会变得复杂得多。

var result = text.replace(/[^a-zA-Z0-9's!?]+/g, '');

这将留下新的行和选项卡以及空格。如果你也想去掉新行和制表符,请将其更改为:

var result = text.replace(/[^a-zA-Z0-9 !?]+/g, '');
text = "A(B){C};:a.b*!c??!1<>2@#3"
result = text.replace(/[^a-zA-Z0-9]/g, '')

应返回ABCabc123

首先,我们将文本定义为A B C a b c 1 2 3,但使用随机字符将result设置为:

text.replace(...),其中参数为:

/.../g/.../:^表示反向;不删除以下字母:

a-z(小写字母)、A-Z(大写字母)和0-9(数字)

g表示全局,删除所有匹配,而不仅仅是第一个匹配

第二个参数是替换字符,我们将其设置为一个空字符串,以便它只保留指定的字符串。如果指定了,它将返回以下信息:var cleaned = someString.replace(/[^a-zA-Z0-9! ]+/g, "");

您可以尝试使用正则表达式,如:CCD_23