【问题标题】:Regex get value between braces inclusive the braces with split正则表达式在大括号之间获取值,包括带有拆分的大括号
【发布时间】:2020-03-19 15:04:53
【问题描述】:

我正在尝试为 Javascript 中的拆分构建一个正则表达式,它将在 {t} 内有大括号的每个位置拆分一个字符串。

我遇到的问题是正则表达式。目前我有一个匹配大括号 {} 的正则表达式,但是当我在这些大括号上拆分字符串时,拆分函数将删除大括号。

假设我有一个字符串:“我的名字是 {name},我是 {years} 岁”。在该字符串上,我将使用以下表达式:

const splitted = value.split(/[{}]+/g); // Value is "My name is {name} and I am {years} old"
console.log(splitted); 

console.log 上方显示

["My name is ,", "name", " and I am ", "years", " old"]

但我想要

["My name is ,", "{name}", " and I am ", "{years}", " old"]

我做错了什么?

【问题讨论】:

    标签: javascript regex


    【解决方案1】:

    您可以将此正则表达式与捕获组一起使用:

    const s = "My name is {name} and I am {years} old";
    
    var arr = s.split(/({[^}]*})/g);
    
    console.log(arr);

    {[^}]*} 匹配以{ 开头并以} 结尾的子字符串,通过在此模式周围放置一个捕获组,我们确保该组是split 结果的一部分。

    【讨论】:

    • 非常感谢!我仍在学习正则表达式,但遇到了困难。
    【解决方案2】:

    我们可以为此使用惰性量词。

    const s = "My name is {name} and I am {years} old";
    
    var arr = s.split(/({[^]*?})/g);
    
    console.log(arr);

    惰性量词*? 为您提供适合正则表达式的最短匹配项。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-01-14
      • 2021-08-20
      • 2011-01-25
      • 2020-03-14
      • 2015-05-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多