JavaScript 如何使用Regex来获取大括号之间的字符串

JavaScript 如何使用Regex来获取大括号之间的字符串

我们可以创建一个正则表达式,这样它可以找到大括号之间的所有子串。之后,我们可以使用exec()或match()方法来提取匹配的子串。

在本教程中,我们将学习如何使用正则表达式来获取大括号之间的字符串。例如,如果我们给出一个字符串,如’这是一个带有{大括号的{string},我们需要提取所有位于大括号之间的子字符串。

使用exec()方法和正则表达式来获取大括号之间的字符串

exec()方法通常与正则表达式一起使用,以找到匹配的子串。它以数组格式返回所有匹配的结果,如果没有找到任何匹配的出现,则返回空值。

语法

用户可以按照下面的语法来使用exec()方法和正则表达式来获取大括号之间的所有子串。

var regex = /{([^}]+)}/g;
while (match = regex.exec(originalStr)) {
   results.push(match[1]);
}

在上面的语法中,我们已经创建了regex来查找大括号之间的子串。然后,我们遍历匹配数组,得到所有匹配的出现。

例子

在下面的例子中,’originalStr’变量包含有大括号的字符串。regex.exec()方法返回所有匹配子字符串的2D数组。数组中的每个元素都是一个由两个字符串组成的数组。第一个元素是一个带大括号的字符串,第二个元素是一个不带大括号的字符串,我们想提取这个字符串。

在输出中,用户可以观察到,它显示了’Developer’和’JavaScript’子串,因为它们都在大括号之间。

<html>
<body>
   <h3>Using the <i> regular expression and exec() method </i> to get string between curly braces in JavaScript</h3>
   <div id = "demo"> </div>
   <script>
      let output = document.getElementById("demo");
      function getStringBetweenBraces() {
         var originalStr = "Hello {Developers}! Let's develop {JavaScript} code!";
         var found = [];
         var regex = /{([^}]+)}/g;
         var results = [];
         let match;
         while (match = regex.exec(originalStr)) {
            results.push(match[1]);
         }
         output.innerHTML = "The original string is " + originalStr + "<br>";
         output.innerHTML += "The substrings between curly braces are " + results + "<br>";
      }
      getStringBetweenBraces();
   </script>
</body>
</html>

使用正则表达式的match()方法来获取大括号之间的字符串

match()方法也会以数组的形式返回字符串中所有匹配的出现的内容。

语法

用户可以按照下面的语法,使用带有正则表达式的 match() 方法来获取大括号之间的字符串。

let results = originalStr.match(/{([^}]+)}/g); 

在上面的语法中,originalStr是一个带大括号的字符串,我们将正则表达式作为match()方法的参数传给了它。

例子

在下面的例子中,match()方法返回带有大括号的字符串数组。但是,它并没有返回去掉大括号后的字符串。用户可以使用subStr()或substring()方法来删除返回结果中的大括号。

<html>
<body>
   <h3>Using the <i> regular expression and match() method </i> to get string between curly braces in JavaScript</h3>
   <div id = "demo"> </div>
   <script>
      let output = document.getElementById("demo");
      function getStringBetweenBraces() {
         var originalStr = "This is {sample} string! This is {original} string!";
         let results = originalStr.match(/{([^}]+)}/g); 
         output.innerHTML = "The original string is " + originalStr + "<br>";
         output.innerHTML += "The substrings between curly braces are " + results + "<br>";
      }
      getStringBetweenBraces();
   </script>
</body>
</html>

使用for循环来获取大括号之间的字符串

我们还可以通过使用for循环遍历字符串来提取大括号之间的所有子串。我们可以跟踪大括号的起始和结尾索引的大括号。之后,我们可以使用substring()方法从原始字符串中提取子串。

语法

用户可以按照下面的语法来使用for循环来提取大括号之间的子串。

for ( ) {
   if (str[i] == "{")
   start = i;
   if (str[i] == "}") {
      end = i;
      let bracesString = str.substring(start + 1, end);
   }
}   

在上述语法中,我们跟踪大括号的开始和结束索引,并使用substring()方法来提取字符串。

操作步骤

第1步 - 使用for循环来迭代字符串。

第2步 - 如果字符串中索引为’I’的字符等于'{‘,将索引值存储在start变量中。

第3步 --如果字符串中索引’I’处的一个字符等于’}’,将索引值存储在结束变量中。

第3.1步 - 使用substring()方法得到’start + 1’索引与’end’索引之间的子串。

第3.2步 - 将得到的子串推入数组。

例子

在下面的例子中,我们按照上面的步骤,使用for a loop来提取大括号之间的字符串。但是,这种方法并不能用于提取嵌套的大括号之间的字符串。

<html>
<body>
   <h3>Using the <i> for loop </i> to get string between curly braces in JavaScript</h3>
   <div id = "demo"> </div>
   <script>
      let output = document.getElementById("demo");
      function getStringBetweenBraces() {
         var str = "Hello {Users}! Welcome to {Website}!";
         var start = 0;
         var end = 0;
         let results = [];
         for (var i = 0; i < str.length; i++) {
            if (str[i] == "{") {
               start = i;
            }
            if (str[i] == "}") {
               end = i;
               let bracesString = str.substring(start + 1, end);
               results.push(bracesString);
            }
         }
         output.innerHTML = "The original string is " + str + "<br>";
         output.innerHTML += "The substrings between curly braces are " + results + "<br>";
      }
      getStringBetweenBraces();
   </script>
</body>
</html> 

我们在本教程中学习了使用正则表达式提取大括号之间的字符串。在第一种方法中,我们使用了带有正则表达式的exec()方法;在第二种方法中,我们使用了带有正则表达式的匹配()方法。

在第三种方法中,我们用for循环代替了正则表达式。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

JavaScript 教程