如果我有一个字符串,其中有任何类型的非字母数字字符:
"This., -/ is #! an $ % ^ & * example ;: {} of a = -_ string with `~)() punctuation"
我如何在JavaScript中得到一个没有标点符号的版本:
"This is an example of a string with punctuation"
如果我有一个字符串,其中有任何类型的非字母数字字符:
"This., -/ is #! an $ % ^ & * example ;: {} of a = -_ string with `~)() punctuation"
我如何在JavaScript中得到一个没有标点符号的版本:
"This is an example of a string with punctuation"
当前回答
如果你想只保留字母和空格,你可以这样做:
str.replace(/[^a-zA-Z ]+/g, '').replace('/ {2,}/',' ')
其他回答
str = str.replace(/[^\w\s\']|_/g, "")
.replace(/\s+/g, " ");
删除除字母数字字符和空白之外的所有内容,然后将多个相邻空白折叠为单个空格。
详细解释:
\w是任意数字、字母或下划线。 \s是任何空白。 [^\w\s\']是指任何不是数字、字母、空格、下划线或单引号的字符。 [^\w\s\']|_与#3相同,只是加了下划线。
对于en-US(美式英语)字符串,这应该足够了:
"This., -/ is #! an $ % ^ & * example ;: {} of a = -_ string with `~)() punctuation".replace( /[^a-zA-Z ]/g, '').replace( /\s\s+/g, ' ' )
注意,如果你支持UTF-8和像chinese/russian这样的字符,这也会替换它们,所以你真的必须指定你想要什么。
如果你想只保留字母和空格,你可以这样做:
str.replace(/[^a-zA-Z ]+/g, '').replace('/ {2,}/',' ')
在支持Unicode的语言中,Unicode Punctuation字符属性是\p{p}——为了便于阅读,通常可以缩写为\pP,有时也可以扩展为\p{Punctuation}。
您正在使用Perl兼容正则表达式库吗?
它很简单,只是替换字符而不是单词:
.replace(/[^\w]/g, ' ')