Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript从字符串中删除所有不是数字、字母和空格的字符_Javascript_Regex - Fatal编程技术网

Javascript从字符串中删除所有不是数字、字母和空格的字符

Javascript从字符串中删除所有不是数字、字母和空格的字符,javascript,regex,Javascript,Regex,使用JavaScript,我希望从字符串中删除所有不是数字、字母和空格的字符。因此,请删除像'%#$&@*这样的字符,例如: 玩家必须玩#只是说说而已 将成为: 球员们只能说 我不确定如何使用正则表达式。使用replace string.replace(/[^A-Z\d\s]/gi, '') 注意正则表达式末尾的两个标志 g-表示全局,意味着将找到正则表达式的每个这样的实例 i-表示不区分大小写。这意味着它将同时匹配小写和大写字符 播放字符串时,它将返回此输出 "Players got to

使用JavaScript,我希望从字符串中删除所有不是数字、字母和空格的字符。因此,请删除像
'%#$&@*
这样的字符,例如:

玩家必须玩#只是说说而已

将成为:

球员们只能说


我不确定如何使用正则表达式。使用
replace

string.replace(/[^A-Z\d\s]/gi, '')
注意正则表达式末尾的两个标志

g
-表示全局,意味着将找到正则表达式的每个这样的实例

i
-表示不区分大小写。这意味着它将同时匹配小写和大写字符

播放字符串时,它将返回此输出

"Players got to  play justsaying"
要将两个或多个空格字符转换为单个空格,可以将另一个
替换为现有的
方法

string.replace(/[^A-Z\d\s]/gi, '').replace(/\s+/g, ' ')
这里的关键是
+
字符,它查找一个或多个字符


也许可以更有效地执行,但我是正则表达式的业余爱好者。

原文

Player's got to * play! #justsaying
Players got to  play justsaying
REGEXP

([^a-zA-Z0-9\s])
结果

Player's got to * play! #justsaying
Players got to  play justsaying
测试它
const regex=/([^a-zA-Z0-9\s])/gm;
const str=`玩家必须玩#只是说`;
常量subst=`;
//被替换的值将包含在结果变量中
const result=str.replace(regex,subst);

控制台日志(结果)我还向regex添加了符号
,因为您有word
播放器的
,所以我的代码如下:

var str = "Player's got to * play! #justsaying";
var result = str.replace(/[^a-z\d\s']/gi, '');
试一试

var text = "Player's got to * play! #justsaying";
var result = text.replace(/[^A-Z\d\s]/gi,'');
console.log(result);
请在此处阅读更多信息:

这是如何匹配要删除的字符的方法

[^\d\w\s]
注意:您应该使用全局修改器

此处测试:
关于如何应用它,请参阅本文:

正如@chris85所说,您可以使用正则表达式
[^0-9a-z-A-z]
替换所有非字母、数字或空格的字符

下面是一个函数,它将执行您想要的操作:

function clean(str) {
    return str.replace(/[^0-9a-z-A-Z ]/g, "").replace(/ +/, " ")
}

需要第二次替换调用来删除由于删除空格之间的字符而产生的多余空格。

可能
[^0-9a-zA-Z]
?谢谢你,有没有办法去掉两个空格,这样两个空格就变成了一个空格?这是同一个概念。使用replace以任意方式替换双空格。Richard Hamilton给了你一个很好的答案,我想你会从学习如何使用
字符串中受益匪浅。替换
与询问他人如何操作相比修改了原始答案我会使用空格,而不是
\s
,这也会将所有新行转换为空格。@chris85是的,你说得对
\w
也将是
\u
。我已经更新了我的答案。非常感谢。它还包括数字,所以
\d
是多余的。\w=“any word character”,所以我说的是匹配任何不是数字、单词或空格的内容。不,是数字、字母或下划线。哦,我明白了!谢谢,知道这个很有用。空格应该量化。由于空格的数量不均匀,这仍然会有多个空格。我添加了您的建议