2008-09-29 37 views
10
在Javascript

,如下:引號的字符串列表的正則表達式匹配 - 不帶引號的

var test = '"the quick" "brown fox" "jumps over" "the lazy dog"'; 
var result = test.match(/".*?"/g); 
alert(result); 

收益率「快速」,「棕色狐狸」,「跳過」,「懶狗」

我想不帶引號將每一個匹配元素:快速,棕色狐狸,躍過,懶狗

會做什麼的正則表達式嗎?

回答

7

這似乎工作:

var test = '"the quick" "brown fox" "jumps over" "the lazy dog"'; 
var result = test.match(/[^"]+(?=(" ")|"$)/g); 
alert(result); 

注意:此不匹配空元素(即 「」)。此外,它不適用於不支持JavaScript 1.5的瀏覽器(預覽功能是1.5功能)。

更多信息,請參見http://www.javascriptkit.com/javatutors/redev2.shtml

0

可以使用Javascript replace() method來帶他們出去。

var test = '"the quick" "brown fox" "jumps over" "the lazy dog"'; 

var result = test.replace(/"/, ''); 

除了擺脫雙引號之外,還有更多嗎?

+0

我特別希望相匹配()返回的結果的數組。我知道我可以調整每個元素,但我敢肯定有辦法做到這一步用一個狡猾的正則表達式 – 2008-09-29 05:50:08

-1

這裏有一種方法:

var test = '"the quick" "brown fox" "jumps over" "the lazy dog"'; 
var result = test.replace(/"(.*?)"/g, "$1"); 
alert(result); 
+0

感謝,但結果是一個簡單的字符串。我想要一個4元素的數組(匹配()返回),去掉引號 – 2008-09-29 05:54:00

+0

啊,sry。我的JavaScript有點生疏。看起來像在JavaScript中沒有正則表達式lookbehinds。所以David的回答是你最好的選擇。 – 2008-09-29 06:14:09

3

它不是一個正則表達式,但有兩個簡單的正則表達式。

var test = '"the quick" "brown fox" "jumps over" "the lazy dog"'; 

var result = test.match(/".*?"/g); 
// ["the quick","brown fox","jumps over","the lazy dog"] 

result.map(function(el) { return el.replace(/^"|"$/g, ""); }); 
// [the quick,brown fox,jumps over,the lazy dog] 
0

這是我會在ActionScript3的使用:

var test:String = '"the quick" "brown fox" "jumps over" "the lazy dog"'; 
var result:Array = test.match(/(?<=^"| ").*?(?=" |"$)/g); 
for each(var str:String in result){ 
    trace(str); 
} 
1

grapefrukt的回答作品也。我想起來使用的變化大衛

match(/[^"]+(?=("\s*")|"$)/g) 

,因爲它與正確的空格和製表符任意數量的涉及補間的字符串,這正是我需要的。

0

用於匹配簡單引號和雙引號之間的內容以照顧轉義的引號。

隨着搜索引擎第一次開車把我帶到這裏,我真的想讓那些希望檢查引號對的人定位到更一般的問題:https://stackoverflow.com/a/41867753/2012407

正則表達式可以得到完整的內容,例如'"What\'s up?"'之間形成的引號對,它們不在代碼註釋中,如// Comment./* Comment. */

相關問題