正在 JS 中研究一些正则表达式,并注意到使用负数集时出现一些奇怪的情况。似乎由于某种原因“^”与以下负集不匹配:
[^a-zA-z0-9]
当我尝试对以下字符串进行替换时,结果只留下“^”字符:
"'\"&@#$%^&".replaceAll(/[^a-zA-z0-9]/g,"") // Result: '^'
为什么会发生这种情况?负集不应该与“^”匹配吗,因为在提供的任何范围中都找不到它?
我已将示例作为片段包含在内以演示该问题:
console.log("'\"&@#$%^&".replaceAll(/[^a-zA-z0-9]/g,""))
在大写范围内有一个拼写错误...
A-z
而不是 A-Z
发生这种情况是因为您同时匹配了
a-z
和 A-z
,并且使用小写 z
而不是大写 Z
。尝试以下操作:
console.log("'\"&@#$%^&".replaceAll(/[^a-zA-Z0-9]/g,""))