2013-05-20 35 views
51

Tôi không có nhiều kinh nghiệm với JavaScript nhưng tôi đang cố tạo hệ thống thẻ, thay vì sử dụng @ hoặc #, sẽ sử dụng /.Kết hợp dấu gạch chéo với một regex

var start = /#/ig; // @ Match 

var word = /#(\w+)/ig; //@abc Match 

Tôi làm cách nào để sử dụng / thay vì #. Tôi đã thử làm var slash = '/' và thêm + slash +, nhưng điều đó không thành công.

+1

Vui lòng thay đổi tiêu đề. Và bạn đang thực sự cố gắng làm gì? Tôi vẫn không có ý tưởng sau khi đọc câu hỏi của bạn. – OptimusCrime

+0

Tôi không chắc mình hiểu. –

+2

http://meta.stackexchange.com/a/177767/178816 –

Trả lời

71

Bạn có thể thoát khỏi nó như thế này.

/\//ig; // Matches/

hoặc chỉ sử dụng indexOf

if(str.indexOf("/") > -1) 
+0

Cảm ơn bạn Ben, tôi đã thử điều đó nhưng tôi đã thêm một \ ở cuối. – iBrazilian2

14

Bạn cần phải thoát khỏi / với số \.

/\//ig // matches/
4

Nếu bạn muốn sử dụng / bạn cần phải thoát khỏi nó với một \

var word = /\/(\w+)/ig; 
6

Trong biểu thức thông thường, "/" là một nhân vật đặc biệt mà cần phải được thoát (AKA gắn cờ bằng cách đặt một \ vì thế trước khi nó phủ nhận bất kỳ chức năng chuyên biệt nó có thể phục vụ).

Dưới đây là những gì bạn cần:

var word = /\/(\w+)/ig; // /abc Match 

Đọc trên RegEx ký tự đặc biệt ở đây: http://www.regular-expressions.info/characters.html

+6

"/" không phải là ký tự đặc biệt trong cụm từ thông dụng. Tuy nhiên, nó là một ký tự đặc biệt trong JavaScript để phân định nơi regex bắt đầu và kết thúc. – sokkyoku

0

tôi gặp phải hai vấn đề liên quan đến quy định trên, khi giải nén văn bản giới hạn bởi \/, và tìm thấy một giải pháp phù hợp với cả hai, ngoài việc sử dụng new RegExp, yêu cầu \\\\ khi bắt đầu. Những phát hiện này có trong Chrome và IE11.

Các biểu hiện thường xuyên

/\\(.*)\//g 

không hoạt động. Tôi nghĩ rằng // được hiểu là khởi đầu của một nhận xét bất chấp ký tự thoát. Cụm từ thông dụng (có giá trị như nhau trong trường hợp của tôi mặc dù không nói chung)

cũng không hoạt động. Tôi nghĩ rằng / thứ hai chấm dứt biểu thức chính quy bất chấp ký tự thoát.

Điều gì làm việc cho tôi là đại diện cho /\x2F, là đại diện thập lục phân của /. Tôi nghĩ rằng đó là hiệu quả hơn và dễ hiểu hơn bằng cách sử dụng new RegExp, nhưng tất nhiên nó cần một bình luận để xác định mã hex.

0

Forward Slash là ký tự đặc biệt như vậy, bạn cần phải thêm một dấu gạch chéo trước dấu gạch chéo để làm cho nó hoạt

$patterm = "/[0-9]{2}+(?:-|.|\/)+[a-zA-Z]{3}+(?:-|.|\/)+[0-9]{4}/"; 

nơi/đại diện tìm kiếm/ Bằng cách này bạn

0

Bạn cũng có thể làm việc xung quanh việc xử lý JS đặc biệt của dấu gạch chéo phía trước bằng cách đính kèm nó trong một nhóm ký tự, như vậy:

const start = /[/]/g; 
"/dev/null".match(start)  // => ["/", "/"] 

const word = /[/](\w+)/ig; 
"/dev/null".match(word)  // => ["/dev", "/null"] 
Các vấn đề liên quan