2015-11-04 66 views
0

我正在使用一個小小的JS插件來截斷我正在處理的網站上的多行文本。將HTML標籤添加到此正則表達式字符串

唯一的問題是,該腳本正在計數HTML標記<a href="..."></a>,例如在字符計數中拋出一些東西。

這是腳本目前排除字符的方式;

regex = /[!-\/:[email protected]\[-`{-~]$/ 

這基本上只是去掉某些標點符號。

我試過把它改成這個;

regex = [!-\/:[email protected]\[-`{-~]$<[^>]*> 

但是,不太熟悉正則表達式,它似乎沒有工作。

如果有人能夠讓我朝着正確的方向發展,那將會很棒。

回答

0

在您的初始正則表達式中,您正在尋找匹配字符串尾部的單個字符 - 無論是字符,單詞還是行。請注意美元符號'$'。

regex = /[!-\/:[email protected]\[-`{-~]$/ 

現在要匹配<>之間的任何東西。

regex = /[!-\/:[email protected]\[-`{-~]$|<[^>]*$/ 

請注意,您匹配:<<aaaa<aaaa<直到你匹配對字符串的結尾。

greedy_regex = /[!-\/:[email protected]\[-`{-~]$|<[^>]*/ 
non_greedy_regex = /[!-\/:[email protected]\[-`{-~]$|<[^>]*?/ 

如果您刪除第二個 '$' - greedy_regex - 它會做一個貪婪的匹配,匹配的a<b>c</b>d<b>c</b>。使用?non_greedy_regex相同,它將僅匹配「」。