【问题标题】:Need to extract values from string in Javascript between words and characters需要在 Javascript 中从单词和字符之间的字符串中提取值
【发布时间】:2019-11-10 13:51:28
【问题描述】:

我将收到来自 AJAX 调用的以下字符串格式: [link=https://www.w3schools.comtext=这里]

我需要提取“link=”之后的值和“text=”之后的值,因此,我的理想输出会将“https://www.w3schools.com”分配给一个变量,然后将“here”分配给一个变量,如代码所示以下。 "link=" 和 "text=" 的值将会改变。

我尝试过使用正则表达式匹配并在 Javascript 中使用 .split,但我无法获得恰到好处的预期值。

var str = "[link=https://www.w3schools.com text=here]";
var link = str.match(/link=(.*)/)[1]; //gets the link but includes rest of string      
var linkText = str.match(/text=(.*)/)[1]; //gets "here" plus the closing bracket

【问题讨论】:

    标签: javascript regex string string-matching


    【解决方案1】:

    在你的模式中添加 "\s""]",试试这个

    var str = "[link=https://www.w3schools.com text=here]";
    var link = str.match(/link=(.*)\s/)[1]; //gets the link but includes rest of string      
    var linkText = str.match(/text=(.*)]/)[1];
    
    console.log(link);
    console.log(linkText);

    【讨论】:

      【解决方案2】:

      你可以使用

      var str = "[link=https://www.w3schools.com text=here]";
      var m, res=[], rx=/(?:^|[\s[])(link|text)=([^\][\s]*)/g;
      while (m = rx.exec(str)) {
        console.log(m[1], "=", m[2]);
      }

      正则表达式是

      /(?:^|[\s[])(link|text)=([^\][\s]*)/
      

      请参阅regex demo

      详情

      • (?:^|[\s[]) - 字符串或空格的开头或[
      • (link|text) - 第 1 组:链接或文字字词
      • = - = 符号
      • ([^\][\s]*) - 第 2 组:除 [] 和空格之外的任何 0+ 个字符。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-12-12
        • 2012-04-13
        • 1970-01-01
        • 1970-01-01
        • 2013-02-06
        • 2021-11-05
        • 2021-12-28
        • 2018-08-16
        相关资源
        最近更新 更多