正则表达式,允许一些html标签

时间:2016-10-10 04:22:08

标签: javascript angularjs regex

我正在使用AngularJS文本编辑器,我想添加更多HTML个标记,以供编辑器允许的默认HTML标记以外的文本编辑器接受。

对于前者: 文本编辑器将允许

<p>,<ul>,<li>,<b>,<ol> ,</p>,</ul>,</li>,</b> and </ol>

什么是常规表达来验证字符串?

1 个答案:

答案 0 :(得分:0)

请参阅以下脚本。使用以下函数,您将能够删除除函数参数中允许的所有HTML标记。

<script type="text/javascript">
//Function to strip all the tags except allowed tags
function strip_tags(input, allowed) {
    allowed = (((allowed || '') + '')
    .toLowerCase()
    .match(/<[a-z][a-z0-9]*>/g) || [])
    .join(''); // making sure the allowed arg is a string containing only tags in lowercase (<a><b><c>)
    var tags = /<\/?([a-z][a-z0-9]*)\b[^>]*>/gi,
    commentsAndPhpTags = /<!--[\s\S]*?-->|<\?(?:php)?[\s\S]*?\?>/gi;
    return input.replace(commentsAndPhpTags, '')
    .replace(tags, function($0, $1) {
        return allowed.indexOf('<' + $1.toLowerCase() + '>') > -1 ? $0 : '';
    });
}
var str = strip_tags(
   '<p>There is some <u>text</u> here</p>',
   '<p><ul><li><b><ol>' // Allowed tags
);
</script>