Javascript 删除字符串为String.prototype.replace的非字母数字文本
我试图去掉一个字符串中所有不是字母或数字的字符。我尝试使用正则表达式替换Javascript 删除字符串为String.prototype.replace的非字母数字文本,javascript,regex,Javascript,Regex,我试图去掉一个字符串中所有不是字母或数字的字符。我尝试使用正则表达式替换String.prototype.replace,但没有删除预期的字符: this.colorPreset1 = this.colorPreset1.replace(/^[0-9a-zA-Z]+$/, ''); 角色组已更改为排除组[^]将匹配列表中未包含的任何字符。正如你所拥有的,它只会匹配你想要保留的角色 字符串的锚已删除-您希望替换任何非字母数字字符,因此它们位于何处无关紧要 添加了全局标志//g,因此它将替换所有匹
String.prototype.replace
,但没有删除预期的字符:
this.colorPreset1 = this.colorPreset1.replace(/^[0-9a-zA-Z]+$/, '');
角色组已更改为排除组<代码>[^]将匹配列表中未包含的任何字符。正如你所拥有的,它只会匹配你想要保留的角色
字符串的锚已删除-您希望替换任何非字母数字字符,因此它们位于何处无关紧要
添加了全局标志//g
,因此它将替换所有匹配项,而不仅仅是第一个匹配项
角色组已更改为排除组<代码>[^]将匹配列表中未包含的任何字符。正如你所拥有的,它只会匹配你想要保留的角色
字符串的锚已删除-您希望替换任何非字母数字字符,因此它们位于何处无关紧要
添加了全局标志
//g
,因此它将替换所有匹配项,而不仅仅是第一个匹配项。JavaScript RegEx replace将只替换第一个找到的值。如果在模式中指定g
参数,则表示全局或“全部替换”
JavaScript正则表达式替换将只替换第一个找到的值。如果在模式中指定
g
参数,则表示全局或“全部替换”
通过在正则表达式周围添加
^
和$
,可以明确告诉它匹配以该模式开头和结尾的字符串
因此,只有当字符串的所有内容都与模式匹配时,它才会替换搜索到的模式
如果要匹配每次出现的非数字或字母字符,必须删除^
开始约束和$
结束约束,但还必须更改模式本身:
[A-Za-z0-9]
匹配字母或数字字符,您希望与之相反(要反转字符类,请在字符类的开头添加^
:
[^A-Za-z0-9]
最后,将g
选项添加到正则表达式中,告诉它匹配每个事件(否则仅替换第一个事件):
通过在正则表达式周围添加
^
和$
,可以明确地告诉它匹配以该模式开头和结尾的字符串
因此,只有当字符串的所有内容都与模式匹配时,它才会替换搜索到的模式
如果要匹配每次出现的非数字或字母字符,必须删除^
开始约束和$
结束约束,但还必须更改模式本身:
[A-Za-z0-9]
匹配字母或数字字符,您希望与之相反(要反转字符类,请在字符类的开头添加^
:
[^A-Za-z0-9]
最后,将g
选项添加到正则表达式中,告诉它匹配每个事件(否则仅替换第一个事件):
解释你发布的代码为什么有效是有益的。它鼓励理解而不仅仅是复制/粘贴代码。解释你发布的代码为什么有效是有益的。它鼓励理解而不仅仅是复制/粘贴代码。
/[^A-Za-z0-9]+/g