2014-10-27 98 views
0

我想使用正则表达式来得到一个字符串值之间的正则表达式的值是tt=""&之间的文本匹配和返回两个值

因此,举例来说,"tt="Value"&"我只会想从这里得到"Value"这个词。

到目前为止,我有这个:/tt=.*&/它给了我"tt=Value"&,然后,为了得到我想分割=匹配的值,并从结尾删除2个字符。我觉得,虽然这将是一个可怕的方式来做到这一点,并希望看看它是否可以在正则表达式中完成?

+0

你可以通过捕获组'tt =([^&] *)&' – 2014-10-27 14:18:17

回答

2

您在匹配字符串内部整个上下文的正确轨道上,但您想使用capturing group来匹配/捕获引号之间的值,而不是在=上拆分,并且必须删除两个引号字符。

var r = 'tt="Value"&'.match(/tt="([^"]*)"/)[1]; 
if (r) 
    console.log(r); //=> "Value" 
+0

这么做啊,这就是我想的之后,虽然是'+',应该是'*'吗?这就是我的工作原理。我可以问,最后[1]做了什么?我以前没见过。它是否遗漏了最后一个字符? – Wizard 2014-10-27 14:31:22

+0

'[1]'返回捕获组的匹配,即在括号'(...)'内匹配的结果,并且是'*'很好,因为正在使用if语句检查匹配。 – hwnd 2014-10-27 14:32:41

0

我知道这不是你正在寻找的答案,因为它不涉及正则表达式,但它是我通常这样做的方式。

strvariable = strvariable.Remove(0,strvariable.IndexOf("=") + 2); 
strvariable = strvariable.Remove(strvariable.IndexOf("\""), strvariable.Length - strvariable.IndexOf("\"")); 

这会给你你正在寻找的结果,在这个例子中是Value。