如何使用 JavaScript RegExp 替换字符串?
在本教程中,我们将探索如何使用 JavaScript 中的 正则表达式 替换字符串中的特定子字符串。有时我们可能希望用其他内容替换字符串中重复出现的子字符串。在这种情况下,正则表达式会很有用。在使用它们解决当前问题之前,让我们看看正则表达式到底是什么。
正则表达式 基本上是一种字符模式,可用于在字符串中搜索该模式的不同出现。正则表达式可以在字符流中搜索特定模式并轻松替换它。例如,考虑正则表达式 /ab*c/,它表示我们正在寻找一个模式,其中有一个"a",后跟 0 个或多个 b 字符,后跟一个"c"。
现在我们知道了什么是 正则表达式,让我们看看如何使用它们在 JavaScript 中替换字符串中的子字符串。由于正则表达式用于表示不同的字符模式,因此它们有助于在字符串中查找这些模式并替换它们。
出于这个原因,JavaScript有一个用于字符串数据类型的内置方法。JavaScript 的 replace() 方法就是这样一种方法。使用这个函数,我们可以用我们想要的任何内容替换字符串中特定模式的出现,并且我们可以使用正则表达式来表示我们想要替换的模式。让我们看看这个函数是如何工作的。
语法和参数
replace() 函数的语法是 −
s.replace(pattern, replacement);
这里 s 是我们想要替换某些模式的字符串。让我们详细看看这两个参数 −
pattern − 这指的是字符串 s 的子字符串,该子字符串将被转换为其他内容,即要替换的子字符串。此参数可以是字符串或正则表达式,表示要在字符串 s 中找到并替换的模式。仅会替换 s 中第一次出现的模式,但如果在此参数中提供了带有全局修饰符"g"的正则表达式,则将替换字符串 s 中该正则表达式的所有匹配项。当然,这是一个必需的参数。
replacement - 这表示将取代字符串 s 中模式的字符串。这是将用其替换模式的每次出现。请注意,此参数也可以是一个函数,它返回将用作 s 中每次出现模式的替换的字符串。
此函数将另一个具有所需替换的字符串作为输出。例如,
"abcdea".replace(/a/i, "b");
执行此操作后,结果字符串将从"abcdea"更改为"bbcdea"。请注意,最后一个 a未被替换,因为作为模式提供的正则表达式不包含全局修饰符"g"。
让我们看看如何通过带有和不带有全局修饰符"g"的代码实现这一点。
示例 1:没有全局修饰符"g"。
在下面的示例中,我们使用不带全局修饰符"g"的字符串 replace() 方法替换字符串。
<!DOCTYPE html> <html> <body> <script> var st = "She sells sea shells on the seashore"; document.write("Original string : " + st); var regExp = /Sea/i; var modifiedSt = st.replace(regExp, "river"); document.write("<br>Modified string : " + modifiedSt); </script> </body> </html>
在上面的代码中,我们使用了仅带有一个修饰符"i"的正则表达式来实现在 JavaScript 中替换字符串的子字符串,您可以注意到,它只将第一次出现的"sea"更改为"river",而不是将最后一个单词"seashore"中的第二次出现的"seashore"更改为"river"。
示例 2:使用全局修饰符"g"。
在下面的示例中,我们使用带有全局修饰符"g"的字符串 replace() 方法替换字符串。
<!DOCTYPE html> <html> <body> <script> var st = "She sells sea shells on the seashore"; document.write("Original string : " + st); var regExp = /Sea/ig; var modifiedSt = st.replace(regExp, "river"); document.write("<br>Modified string : " + modifiedSt); </script> </body> </html>
在上面的代码中,我们使用了带有两个修饰符的正则表达式:"i"和"g",以实现在 JavaScript 中替换字符串的子字符串,您可以注意到最后一个单词从"seashore"更改为"rivershore",这在上一个示例中没有发生。
结论
在本教程中,我们了解了如何使用正则表达式替换 JavaScript 中的字符串。这是通过使用 JavaScript 中的 string.replace() 方法实现的,该方法使用正则表达式来识别和替换字符串中的模式。