Javascript 如何从字符串中获取两个变量?

Javascript 如何从字符串中获取两个变量?,javascript,Javascript,我有一个字符串:'foo=bar;这=是;不=必要“ 我想得到这个结果:{“name”:“foo”,“value”:“bar”} 没有必要,后面是什么 我知道,我应该使用一些regexp,但我真的不明白regexp是如何工作的 感谢是预付款,您可以使用: var values='foo = bar; this = is; not = necessary'.split('; ')[0].split(' = '); var obj={"name" : values[0], "value" : val

我有一个字符串:
'foo=bar;这=是;不=必要“

我想得到这个结果:
{“name”:“foo”,“value”:“bar”}

没有必要,后面是什么

我知道,我应该使用一些regexp,但我真的不明白regexp是如何工作的

感谢是预付款,

您可以使用:

var values='foo = bar; this = is; not = necessary'.split('; ')[0].split(' = ');
var obj={"name" : values[0], "value" : values[1]}
这样做:

  • 'foo=bar;这=是;not=nequired.split(“;”)
    ,返回
    ['foo=bar'、'this=is'、'not=nequired']
  • 您只需要第一个元素,因此
    'foo=bar;这=是;不需要。拆分(“;”)[0]
    给出
    'foo=bar'
  • 然后再次拆分:
    'foo=bar;这=是;不需要。拆分(“;”)[0]。拆分(“=”)
    ,它提供了
    ['foo','bar']
  • 最后,创建对象
  • 您可以使用:

    var values='foo = bar; this = is; not = necessary'.split('; ')[0].split(' = ');
    var obj={"name" : values[0], "value" : values[1]}
    
    这样做:

  • 'foo=bar;这=是;not=nequired.split(“;”)
    ,返回
    ['foo=bar'、'this=is'、'not=nequired']
  • 您只需要第一个元素,因此
    'foo=bar;这=是;不需要。拆分(“;”)[0]
    给出
    'foo=bar'
  • 然后再次拆分:
    'foo=bar;这=是;不需要。拆分(“;”)[0]。拆分(“=”)
    ,它提供了
    ['foo','bar']
  • 最后,创建对象

  • 一种使用正则表达式在特定字符串中搜索指定名称的方法,该名称将匹配字符串的
    foo=bar
    部分:

    function getNameValuePair(string, needle) {
        if (!string || !needle) {
            return false;
        }
        else {
            var newNeedle = needle + '\\s+\\=\\s+\\w+',
                expr = new RegExp(newNeedle),
                parsed = string.match(expr).join(),
                parts = parsed.split(/\s+\=\s+/),
                returnObj = {'name' : parts[0], 'value' : parts[1]};
    
            return returnObj;
        }
    }
    
    var string = 'foo = bar; this = is; not = necessary',
        nameValueObj = getNameValuePair(string, 'foo');
    
    console.log(nameValueObj);
    

    当然,这可以调整为更适合您的需求

    然而,事实上:

  • 该函数检查两个参数是否存在,如果不存在,只返回
    false
  • 创建一个正则表达式模式,该模式包括
    指针
    (“foo”),后跟一个或多个空格单位,后跟单个
    =
    字符,后跟一个或多个空格字符。如果空格可能并不总是存在,则最好改为(
    +
    匹配“一个或多个”,而
    *
    匹配“零个或多个”)
  • 从该模式创建一个RegExp
  • 测试给定字符串以查看其是否与模式匹配,如果匹配,则将其存储在
    parsed
    变量中
  • 使用另一个正则表达式拆分解析后的
    变量,有效地按照零或多个空格后跟一个
    =
    后跟零或多个空格的模式进行拆分,将分离的部分存储在
    parts
    数组变量中
  • parts
    变量构造对象
  • 返回该变量
  • 稍微更新了上面的内容,因为用两行代码创建一个RegExp很愚蠢:

    参考资料:


    一种使用正则表达式在特定字符串中搜索指定名称的方法,该名称将与字符串的
    foo=bar
    部分匹配:

    function getNameValuePair(string, needle) {
        if (!string || !needle) {
            return false;
        }
        else {
            var newNeedle = needle + '\\s+\\=\\s+\\w+',
                expr = new RegExp(newNeedle),
                parsed = string.match(expr).join(),
                parts = parsed.split(/\s+\=\s+/),
                returnObj = {'name' : parts[0], 'value' : parts[1]};
    
            return returnObj;
        }
    }
    
    var string = 'foo = bar; this = is; not = necessary',
        nameValueObj = getNameValuePair(string, 'foo');
    
    console.log(nameValueObj);
    

    当然,这可以调整为更适合您的需求

    然而,事实上:

  • 该函数检查两个参数是否存在,如果不存在,只返回
    false
  • 创建一个正则表达式模式,该模式包括
    指针
    (“foo”),后跟一个或多个空格单位,后跟单个
    =
    字符,后跟一个或多个空格字符。如果空格可能并不总是存在,则最好改为(
    +
    匹配“一个或多个”,而
    *
    匹配“零个或多个”)
  • 从该模式创建一个RegExp
  • 测试给定字符串以查看其是否与模式匹配,如果匹配,则将其存储在
    parsed
    变量中
  • 使用另一个正则表达式拆分解析后的
    变量,有效地按照零或多个空格后跟一个
    =
    后跟零或多个空格的模式进行拆分,将分离的部分存储在
    parts
    数组变量中
  • parts
    变量构造对象
  • 返回该变量
  • 稍微更新了上面的内容,因为用两行代码创建一个RegExp很愚蠢:

    参考资料:


    名称/值对是否总是首先出现?是否总是有一个一致的名称?字符串来自哪里?如果改为URL查询字符串格式(例如
    foo=bar&this=is¬=nequired
    ),会更方便。然后用相应的函数对其进行解析。名称/值对是否总是首先出现?是否总是有一个一致的名称?字符串来自哪里?如果改为URL查询字符串格式(例如
    foo=bar&this=is¬=nequired
    ),会更方便。然后用相应的函数解析它。