如果我有一个字符串,其中有任何类型的非字母数字字符:
"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"
当前回答
/[^A-Za-z0-9\s]/g应该匹配所有的标点符号,但要保留空格。 因此,如果需要的话,可以使用.replace(/\s{2,}/g, " ")替换额外的空格。您可以在http://rubular.com/中测试正则表达式
.replace(/[^A-Za-z0-9\s]/g,"").replace(/\s{2,}/g, " ")
更新:只有当输入是ANSI英语时才会工作。
其他回答
str = str.replace(/[^\w\s\']|_/g, "")
.replace(/\s+/g, " ");
删除除字母数字字符和空白之外的所有内容,然后将多个相邻空白折叠为单个空格。
详细解释:
\w是任意数字、字母或下划线。 \s是任何空白。 [^\w\s\']是指任何不是数字、字母、空格、下划线或单引号的字符。 [^\w\s\']|_与#3相同,只是加了下划线。
在支持Unicode的语言中,Unicode Punctuation字符属性是\p{p}——为了便于阅读,通常可以缩写为\pP,有时也可以扩展为\p{Punctuation}。
您正在使用Perl兼容正则表达式库吗?
如果您想从字符串中删除特定的标点符号,最好明确地删除您想要的标点符号,例如
replace(/[.,\/#!$%\^&\*;:{}=\-_`~()]/g,"")
执行上述操作仍然不会返回您指定的字符串。如果您想要删除由于删除疯狂的标点符号而留下的任何额外的空格,那么您将需要执行以下操作
replace(/\s{2,}/g," ");
完整的例子:
var s = "This., -/ is #! an $ % ^ & * example ;: {} of a = -_ string with `~)() punctuation";
var punctuationless = s.replace(/[.,\/#!$%\^&\*;:{}=\-_`~()]/g,"");
var finalString = punctuationless.replace(/\s{2,}/g," ");
在firebug控制台中运行代码的结果:
如果您正在使用lodash
_.words('This, is : my - test,line:').join(' ')
这个例子
_.words('"This., -/ is #! an $ % ^ & * example ;: {} of a = -_ string with `~)() punctuation"').join(' ')
/[^A-Za-z0-9\s]/g应该匹配所有的标点符号,但要保留空格。 因此,如果需要的话,可以使用.replace(/\s{2,}/g, " ")替换额外的空格。您可以在http://rubular.com/中测试正则表达式
.replace(/[^A-Za-z0-9\s]/g,"").replace(/\s{2,}/g, " ")
更新:只有当输入是ANSI英语时才会工作。