使用 JavaScript 替换字符串中的所有数字

在 JavaScript 中替换字符串中的所有数字

Replace all Numbers in a String using JavaScript

使用该String.replace()方法替换字符串中的所有数字,例如
const replaced = str.replace(/[0-9]/g, '!');.

String.replace()方法将返回一个新字符串,其中所有数字都被提供的替换值替换。

索引.js
const str = 'b234 h567 c890'; // ✅ Replace each number in a string with a replacement string const replaced = str.replace(/[0-9]/g, '!'); console.log(replaced); // 👉️ b!!! h!!! c!!! // ✅ Replace multiple, consecutive numbers with a single replacement string const replaced2 = str.replace(/[0-9]+/g, '!'); console.log(replaced2); // 👉️ b! h! c!

String.replace()
方法返回一个新字符串,其中一个、一些或所有正则表达式的匹配项被替换为提供的替换项

该方法采用以下参数:

姓名 描述
图案 要在字符串中查找的模式。可以是字符串或正则表达式。
替换 用于通过提供的模式替换子字符串匹配的字符串。
String.replace()方法返回一个新字符串,其中替换了模式的匹配项。该方法不会更改原始字符串。

字符串在 JavaScript 中是不可变的。

正斜杠/ /标记正则表达式的开始和结束。

索引.js
const str = 'b234 h567 c890'; const replaced = str.replace(/[0-9]/g, '!'); console.log(replaced); // 👉️ b!!! h!!! c!!!

方括号[]称为字符类。示例中的字符类与 范围内的所有数字0匹配9

我们使用g(global) 标志是因为我们想要匹配字符串中所有出现的数字,而不仅仅是第一次出现的。

如果要用单个替换字符串替换多个连续数字,请使用加号+特殊字符。

索引.js
const str = 'b234 h567 c890'; const replaced2 = str.replace(/[0-9]+/g, '!'); console.log(replaced2); // 👉️ b! h! c!

加号+特殊字符与前面的项目(任何数字)匹配 1 次或多次。

如果您在阅读正则表达式时需要帮助,请查看
MDN 提供的
正则表达式速查表

它包含一个表格,其中包含每个特殊字符的名称和含义以及示例。

该示例使用感叹号作为替换,但是,您可以使用任何其他替换字符串,例如下划线。

索引.js
const str = 'a1 b2 c3'; const replaced = str.replace(/[0-9]/g, '_'); console.log(replaced); // 👉️ a_ b_ c_

如果您必须经常这样做,请定义一个可重用的函数。

索引.js
function replaceNumbers(string, replacement) { return string.replace(/[0-9]/g, replacement); } // 👇️ a^ b^ c^ console.log(replaceNumbers('a1 b2 c3', '^')); // 👇️ a_ b_ c_ console.log(replaceNumbers('a1 b2 c3', '_'));

您还可以使用\d特殊字符替换字符串中的所有数字。

索引.js
const str = 'b234 h567 c890'; // ✅ replace all occurrences of a number with a replacement string const replaced = str.replace(/\d/g, '_'); console.log(replaced); // 👉️ b___ h___ c___ // ✅ replace multiple, consecutive numbers with a single replacement string const replaced2 = str.replace(/\d+/g, '_'); console.log(replaced2); // 👉️ b_ h_ c_

\d特殊字符匹配到范围内0任何数字9

使用\d特殊字符等同于使用字符类。 [0-9]

如果您发现它更具可读性,您可以调整replaceNumbers()函数以使用\d特殊字符。

索引.js
function replaceNumbers(string, replacement) { return string.replace(/\d/g, replacement); } // 👇️ a^ b^ c^ console.log(replaceNumbers('a1 b2 c3', '^')); // 👇️ a_ b_ c_ console.log(replaceNumbers('a1 b2 c3', '_'));

该函数将一个字符串和一个替换项作为参数,并用提供的替换项替换每次出现的数字。

您发现哪个正则表达式更具可读性是个人喜好问题。我会使用字符类[0-9],因为我发现它比\d
特殊字符更直观。