2014-10-27 162 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。