我知道将用户密码传递到 URL 中是不好的做法,我们将努力寻找更好的解决方案,但现在我需要这样做。
如何使用网址中的正则表达式替换密码?
密码可以位于 URL 中问号后面的任意位置。
正则表达式需要处理这样的情况:
API?clientcode=abc&password=123&name=123
API?password=123&name=123
API?name=123&password=123
这是我尝试过的方法,但它并不能涵盖所有情况:
&?password=(.*)&?
'mystring'.replace(/password=(.*?)&/g, 'password=PLACEHOLDER');
最佳答案
您可以使用此正则表达式,
\b([?&]?password=)[^&< ]*
并替换为,
$1PLACEHOLDER
<强> Online Demo
JS代码演示,
var arr = ['<html><a>password=abc<a></html>','API?clientcode=abc&password=123&name=123','API?password=123&name=123','API?name=123&password=123','password=JCuLnyAVeAJIjxLIPoyO3WNYyHtBgySrHsQg2MimIgxHDfbg3APuiSJHtPVY4lN&name=123'];
for(s of arr) {
console.log(s + " --> " + s.replace(/\b([?&]?password=)[^&< ]*/g, '$1PLACEHOLDER'));
}
关于javascript - 如何编写正则表达式来替换 url 字符串中的密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55280481/