gpt4 book ai didi

javascript - 正则表达式的行为因客户端而异

转载 作者:行者123 更新时间:2023-12-03 02:04:10 25 4
gpt4 key购买 nike

我在 Node.js 中有这个应用程序。用户上传 pdf,服务器需要修改客户端的文件名,使其仅包含字母数字字符以及一些其他字符(冒号和点)。

代码如下:

console.log('document.fileName:',document.fileName);
var temp = document.fileName.replace(/[^\w.:-]+/g, "");
console.log('temp:',temp);

现在,使用我的 Mac 并使用 Chrome 打开前端(以 Angular 方式),我上传名为

的文件
åäö&23^¨testarkönstigatäcken

我可以在服务器上的日志中看到:

document.fileName: åäö&23^¨testarkönstigatäcken
temp: aao23testarkonstigatacken

如您所见,它将“äåö”替换为“aao”。其他非字母数字字符已被删除。

但是,如果我对 Safari 浏览器执行同样的操作,“äåö”将会被删除。日志中的结果如下:

document.fileName: åäö&23^¨testarkönstigatäcken
temp: 23testarknstigatcken

当在 Firefox 中执行相同的操作时,我得到了与 Chrome 相同的结果,但正则表达式保留了“äåö”。

当我在 Windows 中执行相同操作时,无论使用哪种浏览器,非字母数字都会被剥离并且不会被替换。

所以,我想知道服务器上的这个正则表达式怎么可能依赖于客户端环境。因为在所有情况下,它都收到相同的文件名。但它的行为会根据客户端发出的请求而有所不同。

最佳答案

我建议在提供正则表达式之前先规范化字符串。

normalize-strings/normalize.js让这变得容易:

var n = require('normalize');
console.log(n('Åland')) // Aland

我希望这会有所帮助。

关于javascript - 正则表达式的行为因客户端而异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49880066/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com