如何删除一切,但字母,数字,空间,从串感叹号和问号?(How to remove everythin

2019-07-31 11:09发布

如何删除一切,但:

字母,数字,空格,感叹号,问题从一个字符串的标记?

重要的是,该方法支持国际语言(UTF-8)。

Answer 1:

您可以使用正则表达式

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

这将取代一切,但一个字字符,空间,感叹号或问题。

字符类 : \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地图 。 只需添加你想要保持的字符或字符范围。

例如:

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

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



Answer 2:

这两个答案贴到目前为止留出了问号。 我会提出意见,但没有足够的代表呢。

大卫是正确的,sachleen的正则表达式将离开强调后面。 rcdmk的正则表达式,作如下修改,就可以了,但如果你关心的国际人物,事情可能会变得复杂得多。

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

这会留下新的生产线和标签以及空格。 如果你想摆脱的新行和制表符,以及,将其更改为:

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


Answer 3:

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

应该返回ABCabc123

首先,我们定义文本ABC abc 1 2 3 ,但与随机字符集的result为:

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

/.../g/.../^意味着扭转; 不去除它们的字母:

az (小写字母), AZ (大写字母)和0-9 (数字)

g意味着全球,删除所有的比赛不只是第一场比赛

第二个参数是替换字符,我们把它设置为空字符串,以便它只是让指定的字符串。 如果 是指定的,它会返回这样的: "ABC abc 1 2 3"



Answer 4:

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



文章来源: How to remove everything but letters, numbers, space, exclamation and question mark from string?