将特定组中的所有字符替换为星号

时间:2016-12-07 15:46:50

标签: javascript regex

我发现this SO帖子很接近,但我想稍微扩展这个问题。

我需要将每个字符(在一组正则表达式中)替换为星号。例如

Hello, my password is: SecurePassWord => Hello, my password is: **************

我有一个正则表达式可以将其抓取到组中,但我无法弄清楚如何应用此示例(来自链接):str.replace(/./g, '*');

是这样的:str.replace(/(Hello, my password is\: )(\w+)/g, '$1...');其中...将字符从$ 2转换为星号是神奇的。

2 个答案:

答案 0 :(得分:1)

您可以使用replacement function String.prototype.replace来获取匹配的文字和群组。

var input = 'Hello, my password is: SecurePassWord';
var regex = /(Hello, my password is: )(\w+)/;
var output = input.replace(regex, function(match, $1, $2) {
  // $1: Hello, my password is: 
  // $2: SecurePassWord
  // Replace every character in the password with asterisks
  return $1 + $2.replace(/./g, '*');
});
console.log(output);

答案 1 :(得分:0)

也许如果你不特别需要正则表达式。

使用:

var password = "something";

你可以这样做:

var mystring = "My passsword is " + Array(password.length).join("*");

或者:

var mystring = "My passsword is " + password;
mystring = mystring.replace(password, Array(password.length).join("*"));