2010-08-04 21 views

Trả lời

6

Javascript sh ould trả về một đối tượng mảng trên một đối sánh regex, trong đó chỉ số bằng không của mảng là toàn bộ chuỗi đã được so khớp và các chỉ mục sau đây là các nhóm chụp. Trong trường hợp một cái gì đó của bạn như:

var myVar = regexp.exec(myString)[1];

nên gán giá trị của nhóm (.*?) chụp để myVar.

+1

Điều này sẽ không xảy ra lỗi nếu không có kết quả phù hợp? Nó trả về null nếu không có kết quả nào để cố gắng truy cập vào chỉ mục mảng của một đối tượng null sẽ ném một lỗi. –

6

(Quotes từ MDC)

Bao gồm dấu ngoặc đơn trong một mô hình biểu hiện thường xuyên khiến cho submatch tương ứng để được ghi nhớ. Ví dụ: /a(b)c/ khớp với các ký tự 'abc' và ghi nhớ 'b'.

Kể từ .*? là trận đấu đầu tiên (và duy nhất) nhớ, sử dụng $1 trong chuỗi thay thế của bạn:

var foo = myString.replace(regexp, '$1'); 

Edit: Theo nhận xét của bạn, bạn cũng có thể (có lẽ với ý định rõ ràng hơn) làm điều này:

var foo = regexp.exec(myString)[1]; 
+0

Cảm ơn gấu. Thing là, tôi không thực sự muốn thay thế toàn bộ điều, tôi chỉ muốn tìm ra giá trị của. *? Là. – morgancodes

+0

[Nick] (http://stackoverflow.com/users/21399/nick) vừa nhận xét (và sau đó xóa nhận xét của anh ấy) rằng phiên bản đầu tiên cũng sẽ hoạt động. Anh ấy đúng, nhưng tôi đoán ý định của phiên bản 'replace' là ít rõ ràng hơn so với ý định của phiên bản' exec'. Trong cả hai trường hợp, bạn phải gán giá trị được trả về bởi 'replace' /' exec' thành một biến khác. –

0

Bạn có thể sử dụng lookahead cho một phần của cụm từ thông dụng này. Xem ở đây:

Regular expression for extracting a number

và/hoặc ở đây:

http://www.regular-expressions.info/lookaround.html

+0

Nhìn chung không phải là câu trả lời. Làm thế nào là nghĩa vụ phải giúp đỡ? –

+0

[quote] Cảm ơn gấu. Thing là, tôi không thực sự muốn thay thế toàn bộ điều, tôi chỉ muốn tìm ra giá trị của. *? Là. - morgancodes 15 phút trước – Skyler

+0

Vì vậy, họ có thể viết một regex rằng [EDIT] phù hợp với <~~ bao gồm (. *?) ~~> và loại trừ các thông tin mà họ không muốn. – Skyler

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