在 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
特殊字符更直观。