一篇文章了解正则表达式的替换技巧


Posted in Javascript onFebruary 24, 2022

1.正则表达式应用——替换指定内容到行尾

原始文本如下面两行

abc aaaaa
123 abc 444

希望每次遇到“abc”,则替换“abc”以及其后到行尾的内容为“abc efg”

即上面的文本最终替换为:

abc efg
123 abc efg

解决:

① 在替换对话框,查找内容里输入“abc.*”,替换内容输入为“abc efg”

② 同时勾选“正则表达式”复选框,然后点击“全部替换”按钮

其中,符号的含义如下:

“.” =匹配任意字符

“*” =匹配0次或更多

注意:其实就是正则表达式替换,这里只是把一些曾经提出的问题加以整理,单纯从正则表达式本身来说,就可以引申出成千上万种特例。

2.正则表达式应用——数字替换

希望把

asdadas123asdasdas456asdasdasd789asdasd

替换为:

asdadas[123]asdasdas[456]asdasdasd[789]asdasd

在替换对话框里面,勾选“正则表达式”复选框;

在查找内容里面输入“([0-9])([0-9])([0-9])”,不含引号

“替换为:”里面输入“[\1\2\3]”,不含引号

####备注####:查找([0-9]+) 替换:[\1] 更简单通用些

范围为你所操作的范围,然后选择替换即可。

实际上这也是正则表达式的使用特例,“[0-9]”表示匹配0~9之间的任何特例,同样“[a-z]”就表示匹配a~z之间的任何特例

上面重复使用了“[0-9]”,表示连续出现的三个数字

括号用来选择原型,进行分组,替换时要用

“\1”代表第一个“[0-9]”对应的原型,“\2”代表第二个“[0-9]”对应的原型,依此类推

“[”|“]”为单纯的字符,表示添加“[”或“]”,如果输入“其它\1\2\3其它”,则替换结果为:

asdadas其它123其它asdasdas其它456其它asdasdasd其它789其它asdasd

功能增强:

如果将查找内容“[0-9][0-9][0-9]”改为“[0-9]*[0-9]”,对应1 或 123 或 12345 或 ...

大家根据需要定制

相关内容还有很多,可以自己参考正则表达式的语法仔细研究一下

3.正则表达式应用——删除每一行行尾的指定字符

因为这几个字符在行中也是出现的,所以肯定不能用简单的替换实现

比如

12345 1265345
2345

需要删除每行末尾的“345”

这个也算正则表达式的用法,其实仔细看正则表达式应该比较简单,不过既然有这个问题提出,说明对正则表达式还得有个认识过程,解决方法如下

解决:

在替换对话框中,启用“正则表达式”复选框

在查找内容里面输入“345$”

这里“$”表示从行尾匹配

如果从行首匹配,可以用“^”来实现,不过 EditPlus 有另一个功能可以很简单的删除行首的字符串

a. 选择要操作的行

b. 编辑-格式-删除行注释

c. 在弹出对话框里面输入要清除的行首字符,确

4.正则表达式应用——替换带有半角括号的多行

几百个网页中都有下面一段代码:

<script LANGUAGE=JavaScript1.1>
<!--
htmlAdWH('93163607', '728', '90');
//-->
</SCRIPT>

我想把它们都去掉,可是找了很多search & replace的软件,都是只能对“一行”进行操作。

EditPlus 打开几百个网页文件还是比较顺畅的,所以完全可以胜任这个工作。

具体解决方法,在 Editplus 中使用正则表达式,由于“(”、“)”被用做预设表达式(或者可以称作子表达式)的标志,所以查找

“<script LANGUAGE=JavaScript1.1>\n<!--\nhtmlAdWH('93163607', '728', '90'.);\n//-->\n</SCRIPT>\n”

时会提示查找不到,所以也就无法进行替换了,这时可以把“(”、“)”使用任意字符标记替代,即半角句号:“.”。替换内容为

<script LANGUAGE=JavaScript1.1>\n<!--\nhtmlAdWH.'93163607', '728', '90'.;\n//-->\n</SCRIPT>\n

在替换对话框启用“正则表达式”选项,这时就可以完成替换了

补充:

对( ) 这样的特殊符号,应该用来表示,这也是很标准的regexp语法,可以写为

<script LANGUAGE=JavaScript1.1>\n<!--\nhtmlAdWH′93163607′,′728′,′90′′93163607′,′728′,′90′;\n//-->\n</SCRIPT>\n

5.正则表达式应用——删除空行

启动EditPlus,打开待处理的文本类型文件。

①、选择“查找”菜单的“替换”命令,弹出文本替换对话框。选中“正则表达式”复选框,表明我们要在查找、替换中使用正则表达式。然后,选中“替换范围”中的“当前文件”,表明对当前文件操作。

②、单击“查找内容”组合框右侧的按钮,出现下拉菜单。

③、下面的操作添加正则表达式,该表达式代表待查找的空行。(技巧提示:空行仅包括空格符、制表符、回车符,且必须以这三个符号之一作为一行的开头,并且以回车符结尾,查找空行的关键是构造代表空行的正则表达式)。

直接在查找中输入正则表达式“^[ \t]*\n”,注意\t前有空格符。

(1)选择“从行首开始匹配”,“查找内容”组合框中出现字符“^”,表示待查找字符串必须出文本中一行的行首。

(2)选择“字符在范围中”,那么在“^”后会增加一对括号“[]”,当前插入点在括号中。括号在正则表达式中表示,文本中的字符匹配括号中任意一个字符即符合查找条件。

(3)按一下空格键,添加空格符。空格符是空行的一个组成成分。

(4)选择“制表符”,添加代表制表符的“\t”。

(5)移动光标,将当前插入点移到“]”之后,然后选择“匹配 0 次或更多”,该操作会添加星号字符“*”。星号表示,其前面的括号“[]”内的空格符或制表符,在一行中出现0个或多个。

(6)选择“换行符”,插入“\n”,表示回车符。

④、“替换为”组合框保持空,表示删除查找到的内容。单击“替换”按钮逐个行删除空行,或单击“全部替换”按钮删除全部空行(注意:EditPlus有时存在“全部替换”不能一次性完全删除空行的问题,可能是程序BUG,需要多按几次按钮)。

6.正则表达式应用——实例应用

1.验证用户名和密码:(^[a-zA-Z]\w{5,15}$)正确格式:[A-Z][a-z]_[0-9]组成,并且第一个字必须为字母6~16位;

2.验证电话号码:(^(\\d{3,4}-)\\d{7,8}$)正确格式:xxx/xxxx-xxxxxxx/xxxxxxxx;

3.验证手机号码:^1[3|4|5|7|8][0-9]\\d{8}$;

4.验证身份证号(15位或18位数字):\\d{14}[[0-9],0-9xX];

5.验证Email地址:(^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$);

6.只能输入由数字和26个英文字母组成的字符串:(^[A-Za-z0-9]+$) ;

7.整数或者小数:^[0-9]+([.][0-9]+){0,1}$

8.只能输入数字:^[0-9]*$。

9.只能输入n位的数字:^\d{n}$。

10.只能输入至少n位的数字:^\d{n,}$。

11.只能输入m~n位的数字:^\d{m,n}$。

12.只能输入零和非零开头的数字:^(0|[1-9][0-9]*)$。

13.只能输入有两位小数的正实数:^[0-9]+(.[0-9]{2})?$。

14.只能输入有1~3位小数的正实数:^[0-9]+(\.[0-9]{1,3})?$。

15.只能输入非零的正整数:^\+?[1-9][0-9]*$。

16.只能输入非零的负整数:^\-[1-9][0-9]*$。

17.只能输入长度为3的字符:^.{3}$。

18.只能输入由26个英文字母组成的字符串:^[A-Za-z]+$。

19.只能输入由26个大写英文字母组成的字符串:^[A-Z]+$。

20.只能输入由26个小写英文字母组成的字符串:^[a-z]+$。

21.验证是否含有^%&',;=?$\等字符:[%&',;=?$\\^]+。

22.只能输入汉字:^[\u4e00-\u9fa5]{0,}$。

23.验证URL:^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$。

24.验证一年的12个月:^(0?[1-9]|1[0-2])$正确格式为:01~09和10~12。

25.验证一个月的31天:^((0?[1-9])|((1|2)[0-9])|30|31)$正确格式为;01~09、10~29和“30”~“31”。

26.获取日期正则表达式:\\d{4}[年|\-|\.]\d{\1-\12}[月|\-|\.]\d{\1-\31}日?

评注:可用来匹配大多数年月日信息。

27.匹配双字节字符(包括汉字在内):[^ - ]

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

28.匹配空白行的正则表达式:\n\s*\r

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

29.匹配HTML标记的正则表达式:<(\S*?)[^>]*>.*?</>|<.*? />

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

30.匹配首尾空白字符的正则表达式:^\s*|\s*$

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

31.匹配网址URL的正则表达式:[a-zA-z]+://[^\s]*

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

32.匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$

评注:表单验证时很实用

33.匹配腾讯QQ号:[1-9][0-9]{4,}

评注:腾讯QQ号从10 000 开始

34.匹配中国邮政编码:[1-9]\\d{5}(?!\d)

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

35.匹配ip地址:([1-9]{1,3}\.){3}[1-9]。

评注:提取ip地址时有用

36.匹配MAC地址:([A-Fa-f0-9]{2}\:){5}[A-Fa-f0-9]

总结

到此这篇正则表达式替换技巧的文章就介绍到这了,更多相关正则表达式替换技巧内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
才发现的超链接js导致网页中GIF动画停止的解决方法
Nov 02 Javascript
悄悄用脚本检查你访问过哪些网站的代码
Dec 04 Javascript
JS实现一键回顶功能示例代码
Oct 28 Javascript
js实现数组去重、判断数组以及对象中的内容是否相同
Nov 29 Javascript
JavaScript日期时间与时间戳的转换函数分享
Jan 31 Javascript
jquery控制页面部分刷新的方法
Jun 24 Javascript
微信小程序 video组件详解
Oct 25 Javascript
Centos7 中安装 Node.js v4.4.4
Nov 03 Javascript
Node.js应用设置安全的沙箱环境
Apr 23 Javascript
在vue中多次调用同一个定义全局变量的实例
Sep 25 Javascript
js使用文件流下载csv文件的实现方法
Jul 15 Javascript
vue使用codemirror的两种用法
Aug 27 Javascript
最新最全的手机号验证正则表达式
Feb 24 #Javascript
前端实现滑动按钮AJAX与后端交互的示例代码
Feb 24 #Javascript
AudioContext 实现音频可视化(web技术分享)
Feb 24 #Javascript
WebRTC记录音视频流(web技术分享)
Feb 24 #Javascript
Vue3如何理解ref toRef和toRefs的区别
Feb 18 #Vue.js
JavaScript实现酷炫的鼠标拖尾特效
Vue h函数的使用详解
Feb 18 #Vue.js
You might like
星际实力自我测试
2020/03/04 星际争霸
PHP获取数组最后一个值的2种方法
2015/01/21 PHP
PHP扩展框架之Yaf框架的安装与使用
2016/05/18 PHP
微信公众号OAuth2.0网页授权问题浅析
2017/01/21 PHP
php设计模式之抽象工厂模式分析【星际争霸游戏案例】
2020/01/23 PHP
PHP常量DIRECTORY_SEPARATOR原理及用法解析
2020/11/10 PHP
JavaScript中的其他对象
2008/01/16 Javascript
基于jQuery中对数组进行操作的方法
2013/04/16 Javascript
基于jQuery的图片不完全按比例自动缩小
2014/07/11 Javascript
js实现鼠标感应向下滑动隐藏菜单的方法
2015/02/20 Javascript
基于javascript实现单选及多选的向右和向左移动实例
2015/07/25 Javascript
Node.js Streams文件读写操作详解
2016/07/04 Javascript
Vue-router结合transition实现app前进后退动画切换效果的实例
2017/10/11 Javascript
详解基于Vue cli生成的Vue项目的webpack4升级
2018/06/19 Javascript
解决webpack+Vue引入iView找不到字体文件的问题
2018/09/28 Javascript
Node爬取大批量文件的方法示例
2019/06/28 Javascript
在vue中高德地图引入和轨迹的绘制的实现
2019/10/11 Javascript
Windows上node.js的多版本管理工具用法实例分析
2019/11/06 Javascript
python通过字典dict判断指定键值是否存在的方法
2015/03/21 Python
理解Python中的类与实例
2015/04/27 Python
Python中的错误和异常处理简单操作示例【try-except用法】
2017/07/25 Python
python 动态生成变量名以及动态获取变量的变量名方法
2019/01/20 Python
关于pytorch中全连接神经网络搭建两种模式详解
2020/01/14 Python
pycharm 更改创建文件默认路径的操作
2020/02/15 Python
vue常用指令代码实例总结
2020/03/16 Python
Python流程控制语句的深入讲解
2020/06/15 Python
一款纯css3实现的圆形旋转分享按钮旋转角度可自己调整
2014/09/02 HTML / CSS
德国隐形眼镜店:LuckyLens
2018/07/29 全球购物
怎么样写好简历中的自我评价
2013/10/25 职场文书
财务会计专业求职信范文
2013/12/31 职场文书
主办会计岗位职责
2014/03/13 职场文书
团队精神的演讲稿
2014/05/14 职场文书
2014年学生党支部工作总结
2014/12/20 职场文书
幼儿园万圣节活动总结
2015/05/05 职场文书
创业计划书之电动车企业
2019/10/11 职场文书
Java方法重载和方法重写的区别到底在哪?
2021/06/11 Java/Android