Javascript 替换功能如何以不同方式工作? string=string.replace(/[&\/\\\\\,+()$~%.”“:*?{}]/g,”); 字符串=字符串。替换(/[^a-zA-Z0-9]/g');

Javascript 替换功能如何以不同方式工作? string=string.replace(/[&\/\\\\\,+()$~%.”“:*?{}]/g,”); 字符串=字符串。替换(/[^a-zA-Z0-9]/g');,javascript,replace,Javascript,Replace,这是我在网上找到的代码。我对此有点困惑。为什么代码的第一行“排除”特殊字符,而第二行只包含[]中的字符。这两个函数都是“替换”“那他们怎么会做完全相反的工作呢 第一个正则表达式表示:如果找到这些字符中的任何一个,请将它们替换为零 第二个正则表达式表示:如果发现此处未列出的任何字符,请将其替换为零 [^xyz]匹配x、y或z以外的任何对象。关键区别在于“^”,当它是[]中的第一个字符时,表示不匹配 这里有一个很好的链接来解释。第一个正则表达式说:如果您找到这些字符中的任何一个,请将它们替换为零 第

这是我在网上找到的代码。我对此有点困惑。为什么代码的第一行“排除”特殊字符,而第二行只包含[]中的字符。这两个函数都是“替换”“那他们怎么会做完全相反的工作呢

第一个正则表达式表示:如果找到这些字符中的任何一个,请将它们替换为零

第二个正则表达式表示:如果发现此处未列出的任何字符,请将其替换为零

[^xyz]
匹配x、y或z以外的任何对象。关键区别在于“^”,当它是
[]
中的第一个字符时,表示不匹配


这里有一个很好的链接来解释。

第一个正则表达式说:如果您找到这些字符中的任何一个,请将它们替换为零

第二个正则表达式表示:如果发现此处未列出的任何字符,请将其替换为零

[^xyz]
匹配x、y或z以外的任何对象。关键区别在于“^”,当它是
[]
中的第一个字符时,表示不匹配


这里有一个很好的链接来解释。

原因是插入符号(
^
)直接位于开口括号之后时具有特殊意义。它的意思是“不是以下内容”,因此当它用于替换时,它将替换除括号中的内容以外的所有内容

有关更雄辩的解释,请参见


第一个示例在开始括号后没有插入符号,因此它将排除这些括号内的任何内容。

原因是插入符号(
^
)直接位于开始括号后时具有特殊意义。它的意思是“不是以下内容”,因此当它用于替换时,它将替换除括号中的内容以外的所有内容

有关更雄辩的解释,请参见


第一个示例的左括号后没有插入符号,因此它将排除这些括号内的任何内容。

它是一个正则表达式,并且*%3F%3C%3E%7B%7D%5D%2FGD将不同的参数传递给
。replace
。对于不同的输入,函数的返回值是不同的,这是否令人惊讶?如果您不了解正则表达式,请查看以开始。它是一个正则表达式,*%3F%3C%3E%7B%7D%5D%2FGD将不同的参数传递给
。替换
。对于不同的输入,函数的返回值是不同的,这是否令人惊讶?如果您不了解正则表达式,请查看开始部分。谢谢您的解释。我确实查了这个,但不满意。谢谢你的解释。我实际上搜索了这个,但并不满意。谢谢你把它清理干净。
string = string.replace(/[&\/\\#,+()$~%.'":*?<>{}]/g, '');

string = string.replace(/[^a-zA-Z0-9]/g, '');