基于匹配的正则表达式动态替换数据 - JavaScript?


正则表达式 (或正则表达式) 用于匹配文本字符串中的模式。使用 JavaScript,您可以使用正则表达式根据匹配的模式动态替换数据。

本文将解释如何将正则表达式和 JavaScript 结合使用,以便在代码中进行动态替换。我们将介绍正则表达式语法的基础知识、正则表达式对象以及使用它们与 JavaScript 的方法。

JavaScript 提供各种数据类型来存储各种类型的值。由于 JavaScript 引擎以动态方式使用变量,因此在使用 JavaScript 时无需指定变量的类型。在这里,必须使用var指定数据类型。它可以存储任何类型的值,包括字符串、数字等等。

在 JavaScript 中使用 replace()

JavaScript 中的replace()方法用于在字符串中搜索指定的值或正则表达式,并返回一个新字符串,其中指定的值被替换。replace()方法不会更改原始字符串。

语法

以下是replace()的语法

string.replace(searchValue, newValue)

为了更清楚地理解“基于匹配的正则表达式动态更改数据”,让我们来看下面的例子。

示例

在下面的示例中,我们使用一个正则表达式并将其传递给一个函数。然后,函数获取替换键作为输入,如果可用则替换它们,并以换行符显示结果。

<!DOCTYPE html>
<html>
<body>
   <script>
      const Original= "#T1# to the #T2# the #T3# E-way learning";
      const replacements = {
         T1: "Welcome",
         T2: "Tutorialspoint",
         T3: "Best"
      };
      const afterchange = Original.replace(/#([^#]+)#/g, (match, key) => {
         return replacements[key] !== undefined ? "<br />" + replacements[key]: "";
      });
      document.write("Original:", Original+"<br>");
      document.write("afterchange:", afterchange);
   </script>
</body>
</html>

当脚本执行时,它将生成一个输出,其中包含原始模板以及在 Web 浏览器上显示的替换模板,这是由执行脚本时触发的事件引起的。

示例

考虑以下示例,其中我们使用正则表达式来动态替换脚本中使用的数据。

<!DOCTYPE html>
<html>
<body>
   <p id="tutorial"></p>
   <script>
      var val = {
         "address_1": "Yes",
         "address_2": "Hyderabad",
         "address_10": "Permanent",
      }
      var sentence = `Can I Know The Address: #ADDRESS1# You Are From:#ADDRESS2# Is It Current Or Permanent: #ADDRESS10#`
      sentence = sentence.replace(/#ADDRESS(\d+)#/g, function(addr, num) {
         var str = val["address_"+num]; return str?str+"<br/>":""
      })
      document.getElementById("tutorial").innerHTML=(sentence);
   </script>
</body>
</html>

运行上述脚本后,Web 浏览器将显示与正则表达式进行比较的句子,并通过运行此脚本时触发的事件在网页上进行替换。

示例

执行以下代码以观察如何使用正则表达式动态更改值。

<!DOCTYPE html>
<html>
<body>
   <p id="tutorial"></p>
   <script>
      var temp = `My name is {{fullName}} I live in {{countryName}}`;
      var details = {
         "fullName": "David Miller",
         "countryName": "AUS"
      }
      replaceName = temp.replace(/\{\{(.+?)\}\}/g, (matching, value) => details[value.trim()]);
      document.getElementById("tutorial").innerHTML=(replaceName);
   </script>
</body>
</html>

当脚本执行时,事件会被触发,这使得给定的句子与正则表达式进行比较并被替换,然后显示替换后的句子。

更新于: 2023年1月18日

3K+ 阅读量

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.