2013-12-16 208 views
-1

我哈瓦一長串這樣detail?ww=hello"....detail?ww=that"。我want't得到detail?ww=和下"之間的所有字符串,我用.match(/detail\?ww=.+\"/g)但陣列我得到包含detail?ww=",我怎麼能只獲得字符串沒有detail?ww="的javascript:獲取特定字符串之間的字符串

+0

你可以有一個像'detail?ww = hello = 1;'的字符串嗎? – Jerry

+0

更新:http://stackoverflow.com/a/20621572/1636522。 – leaf

回答

1

如果JavaScript的理解回顧後,你可以用它來匹配detail?ww=前面和後面;字符串。 Unfotunately事實並非如此,因此需要更多一點的處理:

var str = 'detail?ww=hello"....detail?ww=that"'; 

var regexG = /detail\?ww\=(.+?)\"/g; 
var regex = /detail\?ww\=(.+?)\"/; 
var matches = str.match(regexG).map(function(item){ return item.match(regex)[1] }); 

console.log(matches); 

一些更改正則表達式:

+? - 非貪婪量詞。

+0

對不起,我把一個錯誤的字符串,我已糾正它。 – Arnold

+0

我更新了答案。沒什麼大不了。 – Tibos

+0

哦,謝謝你,我明白了。我不知道JavaScript Array的map方法,現在我明白了。非常感謝。 – Arnold

0

你可以做到這一點使用一個基本的循環:

var result = [], 
    s = 'detail?ww=hello"....detail?ww=that"', 
    r = /detail\?ww=([^"]+)/g, 
    m; 
while (m = r.exec(s)) { 
    result.push(m[1]); 
} 
result; // ["hello", "that"] 
[^"]+ : any char except double quotes, one or more times 

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/exec


記住map不受IE8及以下支持:http://kangax.github.io/es5-compat-table/#Array.prototype.map。如果你真的不喜歡循環,但需要一個跨瀏覽器兼容的解決方案,這裏是一個替代方案:

var s = 'detail?ww=hello"....detail?ww=that"'; 
s = s.replace(/.*?detail\?ww=([^"]+")/g, '$1').match(/[^"]+/g) || []; 
s; // ["hello", "that"] 
相關問題