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

Tom*_*ski 22 javascript replace utf-8

如何删除所有内容,但:

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

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

sac*_*een 44

你可以使用正则表达式

myString.replace(/[^\w\s!?]/g,'');
Run Code Online (Sandbox Code Playgroud)

这将替换除字符,空格,感叹号或问题之外的所有内容.

Character Class:\w通常代表"单词字符" [A-Za-z0-9_].请注意包含下划线和数字.

\s代表"空白字符".它包括[ \t\r\n].

如果你不想要下划线,你可以使用[A-Za-z0-9].

myString.replace(/[^A-Za-z0-9\s!?]/g,'');
Run Code Online (Sandbox Code Playgroud)

对于unicode字符,您可以添加类似于\u0000-\u0080表达式的内容.这将排除该unicode范围内的所有字符.你必须指定字符,则范围想要移除.您可以在Unicode Map上查看所有代码.只需添加您想要保留的字符或一系列字符.

例如:

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

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


Xei*_*err 7

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

应该返回ABCabc123

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

text.replace(...)其中参数是:

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

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

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

第二个参数是替换字符,我们将其设置为空字符串,这样它只保留指定的字符串。如果指定,它将返回:"A B C a b c 1 2 3"


Kel*_*vin 6

到目前为止,这两个答案都没有留下问号.我会评论他们,但还没有足够的代表.

大卫是正确的,sachleen的正则表达式将留下强调.rcdmk的正则表达式,修改如下,将成功,虽然如果你关心国际字符事情可能会变得更复杂.

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

这将留下新的线条和标签以及空格.如果您想要删除新的行和标签,请将其更改为:

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