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

时间:2012-09-09 22:17:10

标签: javascript replace utf-8

如何除去以外的所有内容:

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

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

4 个答案:

答案 0 :(得分:40)

您可以使用正则表达式

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

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

  

Character Class\w代表“单词字符”,通常为[A-Za-z0-9_]。请注意包含下划线和数字。

     

\s代表“空白字符”。它包括[ \t\r\n]

如果您不想使用下划线,则只能使用[A-Za-z0-9]

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

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

例如:

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

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

答案 1 :(得分:5)

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

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

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

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

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

答案 2 :(得分:3)

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表示全局,删除 所有 匹配不仅仅是第一场比赛

      
    
         

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

  

答案 3 :(得分:2)

您可以尝试使用正则表达式:var cleaned = someString.replace(/[^a-zA-Z0-9! ]+/g, "");