2008-09-29 20 views
10

trong Javascript, như sau:biểu thức chính quy kết hợp của danh sách các dấu ngoặc kép dây - không thể viện chứng

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

sản lượng "các nhanh chóng", "nâu fox", "nhảy lên", "con chó lười biếng"

Tôi muốn mỗi phần tử được so khớp không được bỏ phiếu: con cáo màu nâu nhanh, nhảy qua, con chó lười biếng

regexp nào sẽ làm điều này?

Trả lời

7

Điều này dường như làm việc:

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

Lưu ý: Điều này không phù hợp với các yếu tố có sản phẩm nào (ví dụ: ""). Ngoài ra, nó sẽ không hoạt động trong các trình duyệt không hỗ trợ JavaScript 1.5 (lookaheads là một tính năng 1.5).

Xem http://www.javascriptkit.com/javatutors/redev2.shtml để biết thêm thông tin.

0

Bạn có thể sử dụng Javascript replace() method để loại bỏ chúng.

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

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

Có nhiều điều hơn là chỉ loại bỏ các dấu ngoặc kép?

+0

tôi đặc biệt muốn mảng kết quả khớp với() trả về. tôi biết tôi có thể cắt từng yếu tố, nhưng tôi chắc chắn có một cách để làm điều đó một bước sử dụng một biểu thức thông thường xảo quyệt –

-1

Dưới đây là một cách:

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

cảm ơn nhưng kết quả chỉ đơn giản là một chuỗi. tôi muốn có một mảng 4 phần tử (những gì match() trả về) với các dấu ngoặc kép bị tước đi –

+0

Ah, sry. Javascript của tôi là một chút gỉ. Có vẻ như không có lookbehinds regex trong javascript. Vì vậy, câu trả lời của David là đặt cược tốt nhất của bạn. –

3

Nó không phải là một regexp, nhưng hai regexps đơn giản hơn.

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

Vâng tôi có thể thấy cách này sẽ làm việc, nhưng tôi sorta con số nếu tôi sẽ trồng một số công cụ regexp xấu xí-ass trong mã của tôi, nó sẽ được giá trị nó bằng cách làm tất cả mọi thứ tôi muốn trong một shot. :) –

0

Đây là những gì tôi sẽ sử dụng trong ActionScript3: Câu trả lời

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 của các công trình cũng có. Tôi sẽ sử dụng một biến thể của số

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

của David khi nó phù hợp với số lượng không gian trắng và tab tùy ý, đó là những gì tôi cần.

0

Đối với nội dung phù hợp giữa các cặp dấu nháy đơn và dấu ngoặc kép để xử lý các dấu nháy.

Khi công cụ tìm kiếm đầu tiên hướng tôi đến đây, tôi thực sự muốn định hướng mọi người tìm cách kiểm tra cặp ngoặc kép với câu hỏi chung chung hơn: https://stackoverflow.com/a/41867753/2012407.

Regex sẽ nhận được nội dung đầy đủ giữa các cặp ngoặc kép được định dạng tốt như '"What\'s up?"' ví dụ không có chú thích mã như // Comment. hoặc /* Comment. */.

Các vấn đề liên quan