【问题标题】:How to get specific text from a string in regex如何从正则表达式中的字符串中获取特定文本
【发布时间】:2021-12-29 12:48:51
【问题描述】:

我有一个字符串,我需要从中提取特定文本

let str = 'id = "Test This is" id ="second" abc 123 id ="third-123"';
let res = str.match(/[^id ="\[](.*)[^\]]/g);
console.log(res);

我只想要 ids 中的文本 ['Test This is','second','third-123'] 但我收到[ 'Test This is" id ="second" abc 123 id ="third-123"' ] 我不想要的第一个 id 之后的整个文本。我需要有关模式的帮助。

【问题讨论】:

    标签: javascript regex string match


    【解决方案1】:

    您的模式使用否定字符类,您排除匹配列出的单个字符,并排除匹配的 [ 和 ] 示例数据中不存在。

    这样,您将字符串中的第一个字符 T 与 [^id ="\[] 匹配,并将字符串中的最后一个字符 ; 与 [^\]] 和 .* 匹配捕获介于两者之间的所有内容。

    我建议使用否定字符类来排除匹配 " 的情况:;

    \bid\s*=\s*"([^"]*)"
    

    Regex demo

    let str = 'id = "Test This is" id ="second" abc 123 id ="third-123"';
    let res = str.matchAll(/\bid\s*=\s*"([^"]*)"/g);
    console.log(Array.from(str.matchAll(/\bid\s*=\s*"([^"]*)"/g), m => m[1]));

    【讨论】:

      【解决方案2】:

      您可以将其简化为一个非贪婪的正则表达式,与引号在字符串中的位置无关:

      let str = 'id = "Test This is" id ="second" abc 123 id ="third-123"';
      let res = str.match(/".*?"/g);
      console.log(res);

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多