2012-02-27 33 views
5

Tôi đang sử dụng jQuery để sắp xếp cột email, mặc dù chúng được mã hóa base64 trong js ... vì vậy tôi cần lệnh regex để bỏ qua các thẻ <script>.*?<script> và chỉ sắp xếp thứ gì sau chúng (trong các thẻ <noscript>).Regex sử dụng js để tách js từ html

Cột HTML

<td> 
    <script type="text/javascript"> 
     document.write(Base64.decode('PG5vYnI+PGEgaHJlZj0ibWFpbHRvOmJpY2VAdWNzYy5lZHUiIHRpdGxlPSJiaWNlQHVjc2MuZWR1Ij5iaWNlPC9hPjwvbm9icj48YnIgLz4K')); 
    </script> 
    <noscript>username</noscript> 
</td> 

Regex cần một số tình yêu

a.replace(/<script.*?<\/script>(.*?)/i,"$1"); 
+0

Tất cả các email nằm trong '' hoặc '' được lặp lại cho mỗi mục nhập email không? – tftd

+0

Nếu mọi email nằm trong một khối noscript, tại sao không chỉ sắp xếp trên jQuery ("noscript"). – slashnick

Trả lời

2

Giả sử rằng các cấu trúc của html không thay đổi, bạn có thể sử dụng này:

$(a)​.contents().filter(function(){ 
    return this.nodeType === 3 
}).eq(1).text(); 

Nó ge ts tất cả các nút văn bản và sau đó lọc đến một ở chỉ số 1 và nhận được giá trị văn bản của nó.

Và nếu bạn muốn gắn bó với regexp, đây là một:

a.replace(/(<script type="text\/javascript">[^>]+>|<noscript>.*<\/noscript>)/ig,""); 
+0

Cảm ơn, điều này đã làm việc :) – Jeffrey

0

Tôi biết điều này không phải là chính xác những gì bạn đang yêu cầu cho (mặc dù tôi là một chút nhầm lẫn những gì bạn đang yêu cầu cho , phải trung thực ...), nhưng bạn đã xem xét sử dụng document.getElementsByTagName('noscript')? Hàm này sẽ trả về một mảng, phần tử đầu tiên sẽ là phần tử noscript của bạn.

Ngoài ra, tôi không thực sự rõ ràng về cách tiếp cận tổng thể của bạn cho vấn đề này, nhưng có vẻ như bạn đang hiểu sai mục đích của một yếu tố noscript. noscript các phần tử chỉ thực thi khi trình duyệt không hỗ trợ Javascript, có nghĩa là chỉ có nội dung noscript được hiển thị cho người dùng là khi Javascript bạn đang sử dụng để sửa đổi nội dung noscript sẽ không chạy.

Có lẽ bạn có thể làm rõ chính xác bạn đang cố gắng làm gì?

+0

Khi 'noscript' tồn tại trong một phần tử, nó vẫn sẽ là một phần tử con của phần tử đó và vẫn có thể chọn được bất kể JavaScript đang ở đó. Điểm khác biệt duy nhất là nếu JavaScript được bật, nó sẽ bị ẩn. Lấy 'textContent' của' td' vẫn trả về các thẻ 'script' và' noscript'. –

+0

Phải. Tôi đoán tôi đã giải thích câu hỏi của anh ta có nghĩa là anh ta muốn sử dụng JavaScript để sửa đổi nội dung trong các thẻ 'noscript' để hiển thị cho người dùng, nhưng đó có lẽ là một sự hiểu lầm về phía tôi. – JacobEvelyn

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