• 8.由于垃圾评论太多,关闭网站评论功能

  • 7.暂时删除 收藏夹  -2020年7月6日20:01:09

  • 6.添加日历小工具

  • 5.工具箱做为单独页面

  • 4.工具箱新增常用工具链接

  • 3.关闭网站内链–20200626

  • 2.代码风格改为 暗色主题–20200626

     

  • 1.取消左侧菜单列表显示 –20200625

  • 网站升级为https

    2020年6月25日21:40:52

正则匹配相关

APP开发 易天法地 4年前 (2020-08-30) 884次浏览 扫描二维码
文章目录[隐藏]

可用工具 HTMLParser
匹配字符用 .match(/\d+/gi)[0] ;
替换用 .replace(/]*>(.|\n)*/gi,”);

for (let element of elements) {
	if (element.tagName != "A" && element.className != "book_cover") {

	if (element.className == 'undefined' || element.className == null || element.className == '') {
		bookinfo['zuozhe'] = element.innerHTML.replace(/<span[^>]*>(.|\n)*<\/span>/gi,'');
		} else {
			bookinfo[element.className] = element.innerHTML;
		}
	}else if(element.tagName == "A"){  
		bookinfo['bookdetailurl']  = element.attributes["href"].match(/\d+/gi)[0];
	}else if(element.className == "book_cover"){
		bookinfo['bookimageurl']  = element.attributes["src"];
	}

}

1、匹配双标签(包括内容),过滤标签,不保留内容。

var reg1 = /<span[^>]*>(.|\n)*<\/span>/gi;

var str1 = '我是被删除的123123';

console.log(str1.replace(reg1, ''));

2、匹配标签(不包括内容),过滤标签,保留内容。

var reg1 = /(<\/?font.*?>)/gi;
var reg2 = /(<\/?span.*?>)/gi;
var reg3 = /(<\/?a.*?>)/gi;
var reg4= /(<\/?font.*?>)|(<\/?span.*?>)|(<\/?a.*?>)/gi;
console.log(str.replace(reg1, ''));
console.log(str.replace(reg2, ''));
console.log(str.replace(reg3, ''));
console.log(str.replace(reg4, ''));
var str = '我是被保留的<a href="asdasd">你好,我也是被保留的我的font里的</a>';

3、去掉标签内的属性(比如style和class)

var reg1 = /<span[^>]*>/gi;

var str1 = '<span style="color: red;">我是被删除的</span>123123';

console.log(str1.replace(reg1, ''));

4、其他正则

匹配中文字符的正则表达式: [\u4e00-\u9fa5]

评注:匹配中文还真是个头疼的事,有了这个表达式就好办了

匹配双字节字符(包括汉字在内):[^\x00-\xff]
评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)

匹配空白行的正则表达式:\n\s*\r
评注:可以用来删除空白行

匹配HTML标记的正则表达式:<(\s*?)[^>]*>.*?|<.*?>
评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力

匹配首尾空白字符的正则表达式:^\s*|\s*$
评注:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式

匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
评注:表单验证时很实用

匹配网址URL的正则表达式:[a-zA-z]+://[^\s]*
评注:网上流传的版本功能很有限,上面这个基本可以满足需求

匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
评注:表单验证时很实用

匹配国内电话号码:\d{3}-\d{8}|\d{4}-\d{7}
评注:匹配形式如 0511-4405222 或 021-87888822

匹配腾讯QQ号:[1-9][0-9]{4,}
评注:腾讯QQ号从10000开始

匹配中国邮政编码:[1-9]\d{5}(?!\d)
评注:中国邮政编码为6位数字

匹配身份证:/^[1-9][0-9]{5}([1][9][0-9]{2}|[2][0][0|1][0-9])([0][1-9]|[1][0|1|2])([0][1-9]|[1|2][0-9]|[3][0|1])[0-9]{3}([0-9]|[X])$/;
评注:中国的身份证为15位或18位

匹配ip地址:\d+\.\d+\.\d+\.\d+
评注:提取ip地址时有用

匹配特定数字:
^[1-9]\d*$    //匹配正整数
^-[1-9]\d*$   //匹配负整数
^-?[1-9]\d*$   //匹配整数
^[1-9]\d*|0$  //匹配非负整数(正整数 + 0)
^-[1-9]\d*|0$   //匹配非正整数(负整数 + 0)
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$   //匹配正浮点数
^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$  //匹配负浮点数
^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$  //匹配浮点数
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$   //匹配非负浮点数(正浮点数 + 0)
^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$  //匹配非正浮点数(负浮点数 + 0)
评注:处理大量数据时有用,具体应用时注意修正

匹配特定字符串:
^[A-Za-z]+$  //匹配由26个英文字母组成的字符串
^[A-Z]+$  //匹配由26个英文字母的大写组成的字符串
^[a-z]+$  //匹配由26个英文字母的小写组成的字符串
^[A-Za-z0-9]+$  //匹配由数字和26个英文字母组成的字符串

^\w+$  //匹配由数字、26个英文字母或者下划线组成的字符串

str为要去除空格的字符串:
去除所有空格:
str = str.replace(/\s+/g, “”);
去除两头空格:
str = str.replace(/^\s+|\s+$/g, “”);
去除左空格:
str = str.replace(/^\s*/, ”);
去除右空格:
str = str.replace(/(\s*$)/g, “”);

var codeCheck = /^[^_IOZSVa-z\W]{2}\d{6}[^_IOZSVa-z\W]{10}$/;   //统一社会信用代码

 

5、去掉html标签

1,得到网页上的链接地址:

string matchString = @”<a[^>]+href=\s*(?:'(?<href>[^’]+)’|””(?<href>[^””]+)””|(?<href>[^>\s]+))\s*[^>]*>”;
2,得到网页的标题:
string matchString = @”<title>(?<title>.*)</title>”;
3,去掉网页中的所有的html标记:
string temp = Regex.Replace(html, “<[^>]*>”, “”); //html是一个要去除html标记的文档

4, string matchString = @”<title>([\S\s\t]*?)</title>”;

https://blog.csdn.net/hmily43/article/details/98063561

 


本站文章如无特殊说明均为原创
文章标题: 正则匹配相关
转载请注明原文链接:https://www.zylearning.top/913.html
喜欢 (1)