如何编写将替换URL字符串中的密码的正则表达式?

时间:2019-03-21 12:31:32

标签: javascript regex url passwords

我知道将用户的密码传递到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');

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

1 个答案:

答案 0 :(得分:2)

您可以使用此正则表达式,

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