2014-05-02 19 views

Trả lời

7

Cách đơn giản bằng cách sử dụng cụm từ thông dụng trong JavaScript bạn sẽ phân định bằng ký tự /. Tuy nhiên, nếu bạn muốn sử dụng đối tượng toàn cục RegExp, thì bạn sẽ cần truyền vào một chuỗi làm đối số đầu tiên cho hàm tạo bằng cách sử dụng các quy tắc thoát chuỗi bình thường. Sau đây là tương đương.

// shorthand way. 
var re = /\w+/; 
// a way to pass a string in 
var re = new RegExp("\\w+"); 
+2

Cảm ơn. Nó xảy ra với tôi rằng thoát kép là một nỗi đau MAJOR vì vậy tôi đoán tôi đang mắc kẹt với việc sử dụng duy nhất thoát cho nhân vật "/" và sử dụng "/" như dấu phân cách. Nó sẽ là tuyệt vời nếu ai đó đã viết một thư viện hoặc chức năng đặc biệt để làm cho regexes thoát trong javascript dễ dàng hơn! – pepper

+0

Tôi đã thành công khi sử dụng [XRegExp] (http://xregexp.com/). – L0j1k

6

Chúng tôi có bị giới hạn chỉ sử dụng "/" trong javascript không?

Không thực sự .. bạn có thể tránh sử dụng bất kỳ delimiter regex bằng cách sử dụng new RegExp (string) constructor.

var re = new RegExp (string); 

Chỉ cần ghi nhớ rằng điều này sẽ yêu cầu bạn phải tăng gấp đôi thoát thay vì đơn lối thoát.

+2

Câu trả lời hay, nhưng tôi vẫn muốn biết liệu tôi có thể sử dụng ký tự khác từ "/" trong cú pháp của tôi ở trên không. Nếu tôi phải khai báo regex theo cách này, nó cần phải gõ nhiều hơn. Tôi đang cố gắng giảm thời gian để viết regex một lớp lót. – pepper

+3

@pepper bạn không thể. Trình phân tích cú pháp JavaScript được gắn vào tất cả các loại nút ghim vì nó là với dấu phân cách '/'; cho phép bất kỳ nhân vật nào khác có vấn đề nghiêm trọng. – Pointy

+0

bạn cần phải nhanh chóng regex với RegExp mới (chuỗi) và thoát khỏi tất cả các ký tự đặc biệt hai lần bên trong, xem giải pháp. – pepper

5

Trong javascript, nếu bạn muốn inline một regexp, lựa chọn duy nhất của bạn là delimiter forwardslash: /foo/

Như câu trả lời khác lưu ý, bạn cũng có thể gán một biểu thức chính quy cho một biến sử dụng new Regexp("foo").

Sử dụng nhiều dấu phân cách chắc chắn là một điều Perl. Trong Perl bạn có thể sử dụng gần như bất kỳ nhân vật như một dấu phân cách, ví dụ với chuỗi:

cú pháp điển hình sử dụng dấu nháy đơn - 'dipset'

sử dụng chức năng q - q(dipset)q!dipset!q%dipset%

Cho dù điều này tạo ra một cái gì đó có thể đọc được phụ thuộc vào ngữ cảnh .. nó là tốt đẹp mà Perl cho phép bạn làm điều này, nếu kết quả là cái gì đó là có thể đọc được. Ví dụ: các cụm từ thông dụng không thể đọc đủ, mà không có một loạt các dấu gạch chéo ngược được thoát bên trong.

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