node.js 替换正则表达式特殊字符

node.js replace regex special characters

我正在清理文件名,例如

来自

zx5-565x372.jpg?642e0d

zx5-565x372.jpg

具体来说,我想删除 ? 后跟 6 个小写字母数字字符。

我试过像

这样的正则表达式
modified = original.replace("\?\w{6}", "") 

其中 \w[a-zA-Z0-9_] 相同,{6} 是 6 个相同但没有喜悦。

有人可以告诉我正确的方法吗?

您使用的是字符串,而不是 RegExp。

var modified = original.replace(/\?\w{6}$/, "");
modified = original.replace("\?\w{6}", "")
                            \_______/

这只是一个字符串文字,它不是作为正则表达式模式匹配的。
你是 字面意思 将字符串 ?w{6} 替换为空字符串(因为转义的 ?w 没有特殊含义)。

改为使用正则表达式文字:

modified = original.replace(/\?\w{6}/, "");

或者放宽对正则表达式的要求以防格式发生变化:

modified = original.replace(/\?.*/, "");