使用正则过滤html标签
HTML 标签 过滤 正则 使用
2023-09-27 14:26:05 时间
JavaScript有两种方式创建一个正则表达式:
第一种方式是直接通过/正则表达式/
写出来,第二种方式是通过new RegExp('正则表达式')
创建一个RegExp对象。
两种写法是一样的:
var re1 =/A/; var re2 =newRegExp('A');
结构:
字符字面量、字符组、量词、锚字符、分组、选择分支、反向引用。
- 字面量,匹配一个具体字符,包括不用转义的和需要转义的。比如a匹配字符"a",又比如
\n
匹配换行符,又比如\.
匹配小数点。 - 字符组,匹配一个字符,可以是多种可能之一,比如
[0-9]
,表示匹配一个数字。也有\d
的简写形式。另外还有反义字符组,表示可以是除了特定字符之外任何一个字符,比如[^0-9]
,表示一个非数字字符,也有\D
的简写形式。 - 量词,表示一个字符连续出现,比如
a{1,3}
表示“a”字符连续出现3次。另外还有常见的简写形式,比如a+
表示“a”字符连续出现至少一次。 - 锚点,匹配一个位置,而不是字符。比如^匹配字符串的开头,又比如
\b
匹配单词边界,又比如(?=\d)
表示数字前面的位置。 - 分组,用括号表示一个整体,比如
(ab)+
,表示"ab"两个字符连续出现多次,也可以使用非捕获分组(?:ab)+
。 - 分支,多个子表达式多选一,比如
abc|bcd
,表达式匹配"abc"或者"bcd"字符子串。 - 反向引用,比如
\2
,表示引用第2个分组。
操作符:
- 转义符
\
- 括号和方括号
(...)
、(?:...)
、(?=...)
、(?!...)
、[...]
- 量词限定符
{m}
、{m,n}
、{m,}
、?
、*
、+
- 位置和序列
^
、$
、\元字符
、一般字符
- 管道符(竖杠)
|
上面操作符的优先级从上至下,由高到低。
案例:
过滤所有span标签:
var newContent = Regex.Replace(htmlContent, "<span.*?>.*?</span>", String.Empty);
过滤所有具有某个class=Text的span
var newContent= Regex.Replace(testStr, "<span class=\"Text\".*?>.*?</span>", String.Empty);
匹配html标签,但不匹配html标签里的内容
var reg = /<[^>]+>/g; //匹配所有的html标签。但不包括html标签内的内容 var reg2 = /<(?!img).*?>/g; //匹配除img标签外的html标签 不包括html标签内的内容 var reg3 = /<(?!img|p|\/p).*?>/g; //匹配除img、p标签外的html标签 不包括html标签内的内容 var reg4 = /<(img|br|hr|input)[^>]*>/g; //只匹配img、br、hr、input标签
网上说用 new RegExp() 比 正则字面量 速度快
// var reg = /<[^>]+>/g; //过滤所有的html标签 var reg = new RegExp('<[^>]+>','g'); //过滤所有的html标签,不包括内容 // var reg2 = /<(img|br|hr|input)[^>]+>/g; //只匹配img、br、hr、input标签 var reg2 = new RegExp('<(img|br|hr|input)[^>]+>','g'); //只匹配img、br、hr、input标签
常用正则表达式 | |
用户名 | /^[a-z0-9_-]{3,16}$/ |
密码 | /^[a-z0-9_-]{6,18}$/ |
密码2 | (?=^.{8,}$)(?=.*\d)(?=.*\W+)(?=.*[A-Z])(?=.*[a-z])(?!.*\n).*$ (由数字/大写字母/小写字母/标点符号组成,四种都必有,8位以上) |
十六进制值 | /^#?([a-f0-9]{6}|[a-f0-9]{3})$/ |
电子邮箱 | /^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/ /^[a-z\d]+(\.[a-z\d]+)*@([\da-z](-[\da-z])?)+(\.{1,2}[a-z]+)+$/或\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* |
URL | /^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/ 或 [a-zA-z]+://[^\s]* |
IP 地址 | /((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)/ /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/ 或 ((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?) |
HTML 标签 | /^<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s+\/>)$/或<(.*)(.*)>.*<\/\1>|<(.*) \/> |
删除代码\\注释 | (?<!http:|\S)//.*$ |
匹配双字节字符(包括汉字在内) | [^\x00-\xff] |
Unicode编码中的汉字范围 | /^[\u2E80-\u9FFF]+$/ |
汉字(字符) | [\u4e00-\u9fa5] |
中文及全角标点符号(字符) | [\u3000-\u301e\ufe10-\ufe19\ufe30-\ufe44\ufe50-\ufe6b\uff01-\uffee] |
日期(年-月-日) | (\d{4}|\d{2})-((0?([1-9]))|(1[1|2]))-((0?[1-9])|([12]([1-9]))|(3[0|1])) |
日期(月/日/年) | ((0?[1-9]{1})|(1[1|2]))/(0?[1-9]|([12][1-9])|(3[0|1]))/(\d{4}|\d{2}) |
时间(小时:分钟, 24小时制) | ((1|0?)[0-9]|2[0-3]):([0-5][0-9]) |
中国大陆固定电话号码 | (\d{4}-|\d{3}-)?(\d{8}|\d{7}) |
中国大陆手机号码 | 1\d{10} |
中国大陆邮政编码 | [1-9]\d{5} |
中国大陆身份证号(15位或18位) | \d{15}(\d\d[0-9xX])? |
非负整数(正整数或零) | \d+ |
正整数 | [0-9]*[1-9][0-9]* |
负整数 | -[0-9]*[1-9][0-9]* |
整数 | -?\d+ |
小数 | (-?\d+)(\.\d+)? |
空白行 | \n\s*\r 或者 \n\n(editplus) 或者 ^[\s\S ]*\n |
QQ号码 | [1-9]\d{4,} |
不包含abc的单词 | \b((?!abc)\w)+\b |
匹配首尾空白字符 | ^\s*|\s*$ |
相关文章
- 为什么现在又流行服务端渲染html?
- 一文带你了解前端三剑客之HTML
- jQuery去除字符串中的空格、换行符、html标签样式方法
- 一文搞懂HTML图片与链接标签
- java-正则表达式过滤字符串中的html标签
- golang发送html邮件带附件
- HTML的5种空格表示
- HTML——标签 属性总结
- HTML:行内标签~笔记
- 前端基础(二)_HTML常用标签(块级标签、行级标签、行块级标签)
- 前端要失业了么,sketch-code让草图秒变HTML
- 用html给div加类似a标签的超链接(转)
- html meta标签使用总结(转)
- 如何将服务器传来的字符串转成HTML显示在前端页面
- 【HTML——代码雨】(效果+代码)
- 【京东电商网站主界面仿写——HTML第九部分 HTML部分展示结束】
- 《图解HTML练习》- video标签实现视频背景
- HTML 介绍及标签
- 你应该知道的html和css
- 一些常用的HTML标签
- html的常见标签使用
- HTML标签大全
- Razor视图将数据库中由富文本编辑器上传的数据(带html标签)转换为前端页面元素展示
- HTML JQuery获取表单单选框选中的值