为什么在这个正则表达式中'^'没有被替换?

问题描述 投票:0回答:2

正在 JS 中研究一些正则表达式,并注意到使用负数集时出现一些奇怪的情况。似乎由于某种原因“^”与以下负集不匹配:

[^a-zA-z0-9]

当我尝试对以下字符串进行替换时,结果只留下“^”字符:

"'\"&@#$%^&".replaceAll(/[^a-zA-z0-9]/g,"") // Result: '^'

为什么会发生这种情况?负集不应该与“^”匹配吗,因为在提供的任何范围中都找不到它?

我已将示例作为片段包含在内以演示该问题:

console.log("'\"&@#$%^&".replaceAll(/[^a-zA-z0-9]/g,""))

javascript regex
2个回答
0
投票

在大写范围内有一个拼写错误...

A-z
而不是
A-Z


0
投票

发生这种情况是因为您同时匹配了

a-z
A-z
,并且使用小写
z
而不是大写
Z
。尝试以下操作:

console.log("'\"&@#$%^&".replaceAll(/[^a-zA-Z0-9]/g,""))
© www.soinside.com 2019 - 2024. All rights reserved.