繁体   English   中英

用 * 替换字符串中的字符,但只有字符而不是空格 JavaScript 正则表达式

[英]Replace characters in string with *, but only characters not spaces JavaScript regex

我想掩盖一些段落文本,直到它悬停,所以如果我有一个字符串,

Hello World

我希望这样, Hell* *****如何在 4 个字符/字母之后用 * 替换所有字符?

我知道我可以像这样做所有的字符串,

str.replace(/./g, '*')

但我怎么能把它限制在前 4 个字母之后呢?

 var str = "Hello World" var after4= str.substr(0,4)+str.substr(4).replace(/[^\s]/g, '*') console.log(after4)

我可以通过将字符串分成两部分来做到这一点:

  1. 第一部分将保持原样。
  2. 第二部分:我会用所需的字符替换所有字符。
  3. 连接两个字符串

 let text = 'Hello World'; let str1 = text.substring(0, 4); let str2 = text.substring(4).replace(/\S/g, '*'); let updatedStr = str1.concat(str2); console.log(updatedStr); /* Single Line let updatedStr = text.substring(0, 4) + text.substring(4).replace(/\S/g, '*'); */

正则表达式信息:

  • \S:除空格外的任何其他字符(大写“S”)

您可以将它们组合成单行代码:

另一种选择是在第 1 组中使用^(\S{4})捕获前 4 个非空白字符并在替换中使用它。

其他非空白字符将使用交替后跟单个非空白字符|\S,并且这些匹配项将返回为*

^(\S{4})|\S

正则表达式演示

 let str = "Hello World".replace(/^(\S{4})|\S/g, (_, g1) => g1? g1: '*'); console.log(str);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM