2012-04-10 36 views
11

Tôi đang cố gắng để có được một biểu thức regex để chấp nhận < và> như delimiters bên ngoài của tôi để lấy tất cả các nội dung ở giữa chúng.Dấu ngoặc nhọn (< or >) có đặc biệt trong cụm từ thông dụng không?

vì vậy nội dung như vậy

<tfdsfa> 

nên nắm lấy.

Tôi có phải thoát khỏi các ký tự < và> hoặc gì đó không?

Regex được tạo ra bởi kịch bản của tôi:

/<[^(>)]*>/g 

Mã từ file:

data.method.highlight = function() { 
    var x = data.syntax, 
     text = data.$.span.html(); 
    for (var i=0, len = x.length; i < len; i++) { 
     var rx; 
     if (x[i].range) { 
      rx = new RegExp(x[i].tag[0] + "[^(" + x[i].tag[1] + ")]*" + x[i].tag[1], "g"); 
      console.log(rx); 
     } 
     else { 
      var temprx = x[i].tag[0]; 
      for (var z = 1; z < x[i].tag.length; z++) { 
       temprx += "|" + x[i].tag[z]; 
      } 
      rx = new RegExp(temprx, "g"); 
     } 
     text = text.replace(rx,function (match) { 
      console.log("looping - range"); 
      return '<span class="' + x[i].class.default + '">' + match + '</span>'; 
     }); 
     data.$.span.html(text); 
    } 
}; 
+9

Regex của bạn hoạt động. Chính xác thì bạn không đạt được điều gì? –

+0

Sử dụng công cụ này bất cứ khi nào bạn đang phát triển các regex: http://gskinner.com/RegExr/ –

+0

Bạn có thể cho biết cách bạn đang sử dụng cụm từ này không? – MilkyWayJoe

Trả lời

16

Cả < cũng không > là metacharacters bên trong một biểu thức chính quy.

này làm việc cho tôi:

'<foo> and <bar>'.match(/<[^>]*>/g); // ["<foo>", "<bar>"] 
+0

Bạn có thể xem bản chỉnh sửa tôi đã thực hiện hay không. Các regex hoạt động khi tôi chạy nó trong jsfiddle nhưng không phải trong kịch bản của tôi. Bất kỳ ý tưởng làm thế nào mà xảy ra? –

+0

@MikeDepies, đầu ra từ 'console.log (rx)' là gì? Cụ thể hơn, chuỗi chính xác bạn gửi tới hàm tạo RegExp là gì, giá trị chính xác của 'văn bản' và kết quả so với giá trị mong đợi là gì? – davin

+0

Đã giải quyết được vấn đề, nhờ bạn hỏi giá trị văn bản cuối cùng là gì. Văn bản đã chuyển đổi

-1

Có thể bạn có vấn đề bởi vì bạn đang cố gắng để chèn kết quả vào HTML và trình duyệt 'nghĩ' rằng nó là một thẻ HTML không hợp lệ, như <blablabla>.

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