700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > TinyMCE 富文本编辑器 ━━ 一键排版功能所需正则表达式整理及学习

TinyMCE 富文本编辑器 ━━ 一键排版功能所需正则表达式整理及学习

时间:2021-06-08 21:02:07

相关推荐

TinyMCE 富文本编辑器 ━━ 一键排版功能所需正则表达式整理及学习

如果是公文发布,客户往往喜欢直接把word内容复制粘贴,这也导致大量的出错。最近客户的对格式的需求比较强烈,正好借机弄一弄。之前已经放了tinymce的插件及弹窗开发相关内容,今天进入一点关键内容~~

一、以下为目前开发的一键排版功能中涉及到的正则替换,还需优化,未来会陆续新增及改进

//清除所有html空格txt = txt.replace(/&nbsp;/ig,"");//清除所有空行(摘录网上,实测可用)var arrPattern = ['<p(>|\\s+[^>]*>)(&nbsp|&nbsp;|\\s||<br\\s*(\/)?>)*<\/p(>|\\s+[^>]*>)','(<br\\s*(\/)?>((\\s|&nbsp;|&nbsp|)*)){2,}','(<p(>|\\s+[^>]*>))((&nbsp|&nbsp;|\\s)*<br\\s*(\/)?>)*((.|\n|\r)*?<\/p(>|\\s+[^>]*>))'];var arrReplace = ['','<br />$3','$1$6'];for(var i=0;i<arrPattern.length;i++){var arrRegExp = new RegExp(arrPattern[i], 'img');txt = txt.replace(arrRegExp,arrReplace[i]);}//清除所有非空格的空白字符,空格字符去除可能导致元素属性出错txt = txt.replace(/[\f\n\r\t\v]/ig,"");//清除所有spantxt = txt.replace(/<(\/span|span).*?>/ig,"");//清除超链接,将网址分离在后txt = txt.replace(/<a.*?href\s*=\s*[\"|\'](.*?)[\"|\'].*?>(.*?)<\/a>/ig,"$2[网址:$1]");//实际运行中发现有些错误的a链接可能根本没有href,所以需要再次清理txt = txt.replace(/<(\/a|a).*?>/ig,"");//清除所有class,为防止有些class不加引号,因此强制规定只清除元素内的class,这种写法最笨和直观,聪明的看下一个txt = txt.replace(/<([a-zA-Z1-6]+)(.*?)\s*class\s*=\s*[\"|\']?.*?[\"|\']\s*(.*?)>?/ig,"<$1 $2 $3>");//清除所有style属性//直接量语法:txt = txt.replace(/style\s*?=\s*?([\'\"])[\s\S]*?\1/ig,"");//RegExp对象语法,可用于自定义变量,比如出了style以外的class,lang等等var v = "style";txt = txt.replace(new RegExp(v+"\\s*?=\\s*?([\'\"])[\\s\\S]*?\\1","ig"),"");//清除所有元素属性,超链接可能被清除txt = txt.replace(/<([a-zA-Z1-6]+)(\s*[^>]*)?>/ig, "<$1>");//给每段加上样式txt = txt.replace(/<p.*?>/ig,"<p style=\"font-size:16px;font-family:仿宋;line-height:36px;text-indent:2em;\">");//去除除img标签外其它标签txt = txt.replace(/<(?!img).*?>/g, ""); //如果保留img,p标签,则为:txt = txt.replace(/<(?!img|p|/p).*?>/g, "");

二、网上整理的常用正则:/form-regexp.html

1 用户名正则

//用户名正则,4到16位(字母,数字,下划线,减号)var uPattern = /^[a-zA-Z0-9_-]{4,16}$/;//输出 trueconsole.log(uPattern.test("caibaojian"));

2 密码强度正则

//密码强度正则,最少6位,包括至少1个大写字母,1个小写字母,1个数字,1个特殊字符var pPattern = /^.*(?=.{6,})(?=.*\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%^&*? ]).*$/;//输出 trueconsole.log("=="+pPattern.test("caibaojian#"));

3 整数正则

//正整数正则var posPattern = /^\d+$/;//负整数正则var negPattern = /^-\d+$/;//整数正则var intPattern = /^-?\d+$/;//输出 trueconsole.log(posPattern.test("42"));//输出 trueconsole.log(negPattern.test("-42"));//输出 trueconsole.log(intPattern.test("-42"));

4 数字正则

可以是整数也可以是浮点数

//正数正则var posPattern = /^\d*\.?\d+$/;//负数正则var negPattern = /^-\d*\.?\d+$/;//数字正则var numPattern = /^-?\d*\.?\d+$/;console.log(posPattern.test("42.2"));console.log(negPattern.test("-42.2"));console.log(numPattern.test("-42.2"));

5 Email正则

//Email正则var ePattern = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;//输出 trueconsole.log(ePattern.test("99154507@"));

6 手机号码正则

//手机号正则var mPattern = /^1[34578]\d{9}$/; ///regexp-example.html//输出 trueconsole.log(mPattern.test("15507621888"));

7 身份证号正则

//身份证号(18位)正则var cP = /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;//输出 trueconsole.log(cP.test("11010519880605371X"));

8 URL正则

//URL正则var urlP= /^((https?|ftp|file):\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/;//输出 trueconsole.log(urlP.test(""));

9 IPv4地址正则

//ipv4地址正则var ipP = /^(?:(?: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]?)$/;//输出 trueconsole.log(ipP.test("115.28.47.26"));

10 十六进制颜色正则

//RGB Hex颜色正则var cPattern = /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/;//输出 trueconsole.log(cPattern.test("#b8b8b8"));

11 日期正则

//日期正则,简单判定,未做月份及日期的判定var dP1 = /^\d{4}(\-)\d{1,2}\1\d{1,2}$/;//输出 trueconsole.log(dP1.test("-05-11"));//输出 trueconsole.log(dP1.test("-15-11"));//日期正则,复杂判定var dP2 = /^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$/;//输出 trueconsole.log(dP2.test("-02-11"));//输出 falseconsole.log(dP2.test("-15-11"));//输出 falseconsole.log(dP2.test("-02-29"));

12 QQ号码正则

//QQ号正则,5至11位var qqPattern = /^[1-9][0-9]{4,10}$/;//输出 trueconsole.log(qqPattern.test("65974040"));

13 微信号正则

//微信号正则,6至20位,以字母开头,字母,数字,减号,下划线var wxPattern = /^[a-zA-Z]([-_a-zA-Z0-9]{5,19})+$/;//输出 trueconsole.log(wxPattern.test("caibaojian_com"));

14 车牌号正则

//车牌号正则var cPattern = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-Z0-9]{4}[A-Z0-9挂学警港澳]{1}$/;//输出 trueconsole.log(cPattern.test("粤B39006"));

15 包含中文正则

//包含中文正则var cnPattern = /[\u4E00-\u9FA5]/;//输出 trueconsole.log(cnPattern.test("蔡宝坚"));

16 匹配中文字符的正则表达式:

[u4e00-u9fa5]

17 匹配双字节字符(包括汉字在内):

[^x00-xff]

评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)

18 匹配空白行的正则表达式:

ns*r

评注:可以用来删除空白行

19 匹配HTML标记的正则表达式:

< (S?)[^>]>.?|< .? />

评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力

20 匹配首尾空白字符的正则表达式:

^s|s$

评注:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式

21 匹配Email地址的正则表达式:

w+([-+.]w+)@w+([-.]w+).w+([-.]w+)*

评注:表单验证时很实用

22 匹配网址URL的正则表达式:

[a-zA-z]+://[^s]*

评注:网上流传的版本功能很有限,上面这个基本可以满足需求

23 匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):

^[a-zA-Z][a-zA-Z0-9_]{4,15}$

评注:表单验证时很实用

24 匹配国内电话号码:

d{3}-d{8}|d{4}-d{7}

评注:匹配形式如 0511-4405222 或 021-87888822

25 匹配腾讯QQ号:

[1-9][0-9]{4,}

评注:腾讯QQ号从10000开始

26 匹配中国邮政编码:

[1-9]d{5}(?!d)

评注:中国邮政编码为6位数字

27 匹配身份证:

d{15}|d{18}

评注:中国的身份证为15位或18位

28 匹配ip地址:

d+.d+.d+.d+

评注:提取ip地址时有用

29 匹配特定数字:

^[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)

评注:处理大量数据时有用,具体应用时注意修正

30 匹配特定字符串:

^[A-Za-z]+$//匹配由26个英文字母组成的字符串^[A-Z]+$//匹配由26个英文字母的大写组成的字符串^[a-z]+$//匹配由26个英文字母的小写组成的字符串^[A-Za-z0-9]+$//匹配由数字和26个英文字母组成的字符串^w+$//匹配由数字、26个英文字母或者下划线组成的字符串

31 在使用RegularExpressionValidator验证控件时的验证功能及其验证表达式介绍如下:

//只能输入数字:^[0-9]$//只能输入n位的数字:^d{n}$//只能输入至少n位数字:^d{n,}$//只能输入m-n位的数字:^d{m,n}$//只能输入零和非零开头的数字:^(0|[1-9][0-9])$//只能输入有两位小数的正实数:^[0-9]+(.[0-9]{2})?$//只能输入有1-3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$//只能输入非零的正整数:^+?[1-9][0-9]$//只能输入非零的负整数:^-[1-9][0-9]$//只能输入长度为3的字符:^.{3}$//只能输入由26个英文字母组成的字符串:^[A-Za-z]+$//只能输入由26个大写英文字母组成的字符串:^[A-Z]+$//只能输入由26个小写英文字母组成的字符串:^[a-z]+$//只能输入由数字和26个英文字母组成的字符串:/^[A-Za-z0-9]+$///只能输入由数字、26个英文字母或者下划线组成的字符串:^w+$//验证用户密码:^[a-zA-Z]w{5,17}$//正确格式为:以字母开头,长度在6-18之间

32 只能包含字符、数字和下划线。

//验证是否含有^%&',;=?$"等字符:[^%&',;=?$x22]+//能输入汉字:^[u4e00-u9fa5],{0,}$

33 匹配中文字符的正则表达式:

[u4e00-u9fa5]

34 匹配双字节字符(包括汉字在内):

[^x00-xff]

35 匹配空行的正则表达式:

n[s| ]r

36 匹配HTML标记的正则表达式:

/< (.)>.|< (.) />/

37 匹配首尾空格的正则表达式:

(^s)|(s$)

38 验证一年的12个月:

^(0?[1-9]|1[0-2])$//正确格式为:“01”-“09”和“1”“12”

39 验证一个月的31天:

^((0?[1-9])|((1|2)[0-9])|30|31)$

基础知识的学习可前往该网站:/regexp/regexp-tutorial.html

三、修饰符说明

更详细的用法(i、g、m、s、x、e)参考:

/kevin-yuan/archive//09/25/2702167.html

/qq_36340642/article/details/79352876

四、元字符说明

五、各正则表达式相同异同点:

六、学习资料:

JavaScript 正则表达式知识

PHP正则表达式知识

C# 正则表达式知识

Java 正则表达式知识

Python 正则表达式知识

Ruby 正则表达式知识

awk是支持该语法的,只是要在命令 行加入 --posix or --re-interval参数即可,可见 man awk中的interval expression ↩︎

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。