2015-11-04 71 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相同,它将仅匹配“”。