如何使用JavaScript中的正则表达式来获取大括号之间的字符串
我们可以创建一个正则表达式来找到大括号之间的所有子字符串。然后,我们可以使用exec()或match()方法来提取匹配的子字符串。
在本教程中,我们将学习如何使用正则表达式来获取JavaScript中的大括号之间的字符串。例如,如果我们有一个类似于’This is a {string} with {curly} braces’的字符串,我们需要提取所有位于大括号之间的子字符串。
使用exec()方法和正则表达式来获取大括号之间的字符串
exec()方法通常与正则表达式一起使用来查找匹配的子字符串。它以数组格式返回所有匹配结果,如果找不到任何匹配的情况,则返回null值。
语法
用户可以按照下面的语法使用exec()方法和正则表达式来获取大括号之间的所有子字符串。
var regex = /{([^}]+)}/g;
while (match = regex.exec(originalStr)) {
results.push(match[1]);
}
在上述语法中,我们创建了一个正则表达式来查找花括号之间的子字符串。然后,我们通过迭代匹配数组,并获取所有匹配的出现次数。
示例
在下面的示例中,’originalStr’变量包含带有花括号的字符串。regex.exec()方法返回所有匹配子字符串的二维数组。数组的每个元素都是一个包含两个字符串的数组。第一个元素是带有花括号的字符串,而第二个是我们想要提取的不带花括号的字符串。
在输出中,用户可以观察到它显示了’Developers’和’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’处的字符等于’}’,则将索引的值存储在end变量中。
步骤3.1 - 使用substring()方法获取在’开始+1’索引和’结束’索引之间的子字符串。
步骤3.2 - 将结果子字符串推入数组中。
示例
在下面的示例中,我们使用for循环遵循上述步骤提取花括号之间的字符串。然而,这种方法不用于提取嵌套花括号之间的字符串。
<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()方法与正则表达式;在第二种方法中,我们使用了match()方法与正则表达式。
在第三种方法中,我们使用了for循环而非正则表达式。