如何编写一个正则表达式来替换 url 字符串中的密码?

How to write a regular expression that will replace a password in a url string?

我知道将用户密码传递给 url 是一种不好的做法,我们将努力寻找更好的解决方案,但现在我需要这样做。

如何在 url 中用正则表达式替换密码?

密码可以在问号后 url 中的任意位置。

正则表达式需要处理这样的情况:

API?clientcode=abc&password=123&name=123

API?密码=123&name=123

API?名称=123&密码=123

这是我尝试过的方法,但并未涵盖所有情况:

&?password=(.*)&?

'mystring'.replace(/password=(.*?)&/g, 'password=PLACEHOLDER');

我在这里试过这个: https://www.regextester.com/index.php?fam=108498

你可以使用这个正则表达式,

\b([?&]?password=)[^&< ]*

并替换为,

PLACEHOLDER

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, 'PLACEHOLDER'));
}