正则表达式基础与常用验证表达式


Posted in Javascript onJune 16, 2022

一、正则元字符

是一些在正则表达式中有特殊用途、不代表它本身字符意义的一组字符。

1、 字符元字符

  • […] :匹配列表中的任意字符
  • [^…] :匹配不在列表中的任意字符
  • . :匹配除了回车和换行符之外的任何字符
  • \w :元符号,相当于[a-zA-Z0-9_],匹配任何字母、数字、下划线字符,这样的字符也称为单词字符
  • \W :元符号,相当于[^a-zA-Z0-9_],匹配除了字母、数字、下划线字符之外的任何字符
  • \d :元符号,相当于[0-9],匹配任何单个的数字字符
  • \D :元符号,相当于[^0-9],匹配除了数字之外的任何单个字符
  • \s :元符号,匹配空白字符,空白字符是指空格、Tab字符和回车换行符
  • \S :元字符,匹配任何非空白字符

2、重复元字符(量词)

  • x? :匹配0个或1个x。
  • x+ :匹配1个或多个x。
  • x* :匹配0个或多个x。
  • x{n} :匹配n个x。
  • x{n,} :匹配n个或多个x。
  • x{n,m} :匹配n到m个x。

3、定位元字符

  • ^ :匹配必须出现在字符串的开头或行的开头(开头)
  • $ :匹配必须出现在以下位置:字符串结尾、字符串结尾处的 \n 之前或行的结尾。(结尾)
  • \b :匹配单词的开始或结束
  • \B :匹配非单词的开始或结束
  • x(?=y) :正向肯定预查。只有在x后面跟上y时,才匹配x成功。(正向等=)
  • x(?!y) :正向否定预查。只有在x后面不跟着y时,才匹配x成功。 (正向不等!)
  • (?<=x)y:反向肯定预查。只有在y前面跟x时,才匹配y 成功。Javascript不支持。(反向等,为在正向等前加<)
  • (?<!x)y: 反向否定预查。只有在y前面不跟x时,才匹配y 成功。Javascript不支持。(反向不等,为在正向等前加<)

4、分组和替换字符

  • x|y :匹配x或y
  • (sub) :反向引用,将子表达式sub作为一个整体处理,括号的作用相当于代数中括号的作用。并将捕获的子匹配保存在\1,\2,......和$1,$2,......中。例如:/a(bc)+/中,加号元字符作用在子表达式bc上,它匹配abc、abcbc,但是不匹配a和ac
  • (?:sub) :分组子模式,但是不捕获子模式。它的作用与(sub)类似,称为无记忆匹配
  • \1,\2,\3,... :在正则表达式中,分别包含与正则表达式中第一个反向引用、第二个反向引用、第三个反向引用...相匹配的子串
  • $1,$2,$3,... :在替换中,分别包含与正则表达式中第一个反向引用、第二个反向引用。第三个反向引用...相匹配的子串

5、特殊字符

特殊字符是指那些不容易进行直接书面表达或不容易直接使用键盘输入的字符。

  • \0 :匹配null字符,对应的十六进制值为\x00
  • \b :匹配退格字符,对应的十六进制值为\x08
  • \n :匹配换行字符,对应的十六进制值为\x0A
  • \r :匹配回车字符,对应的十六进制值为\x0D
  • \f :匹配换页字符,对应的十六进制值为\x0C
  • \t :匹配制表(TAB)字符,同时对应于水平制表符\x09和垂直制表符\x0B
  • \xhh :匹配用2个十六进制数字表示的字符
  • \uhhhh :匹配用4个十六进制在数字表示的字符,这些字符是Unicode字符。[\u4e00-\u9fa5] 匹配任意一个汉字
  • \cchar :匹配命名的控制字符

6、需要转义的字符

. * + ( ) $ / \ ? [ ] ^ { } - ! < >

7、贪婪与非贪婪匹配

  • 贪婪匹配:正则表达式一般趋向于最大长度匹配,也就是所谓的贪婪匹配。 
    如使用模式 "ab.*c" 匹配字符串"abcaxc";,结果就是匹配到:abcaxc。
  • 非贪婪匹配:就是匹配到结果就好,就少的匹配字符。 
    如使用模式 "ab.*?c" 匹配字符串"abcaxc",结果就是匹配到:abc。

默认是贪婪模式;在量词后面直接加上一个问号?就是非贪婪模式。如:*?

8、常见正则表达式

[1-9]?[0-9]|100 :匹配0-100的数字

\n[\s| ]*\r :匹配空行的正则表达式

二、正则表达式应用举例

1、验证表达式

只能输入数字:"^[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]+$"。或…^[\W]$ 
只能输入由数字、26个英文字母或者下划线组成的字符串:"^\w+$"。 
验证用户密码:"^[a-zA-Z]\w{5,17}$" 正确格式为:以字母开头,长度在6~18之间,只能包含字符、数字和下划线。 
验证是否含有^%&',;=?$\"等字符:"[^%&',;=?$\x22]+"。 
只能输入中文汉字:"^[\u4e00-\u9fa5]{0,}$" 
验证Email地址:"^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$"。 
验证InternetURL:"^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$"。 
验证电话号码:"^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$" 正确格式为:"XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX"。 
验证身份证号(15位或18位数字):"^\d{15}|\d{18}$"。 
验证一年的12个月:"^(0?[1-9]|1[0-2])$"正确格式为:"01"~"09"和"1"~"12"。 
验证一个月的31天:"^((0?[1-9])|((1|2)[0-9])|30|31)$"正确格式为;"01"~"09"和"1"~"31"。 
验证全角字符: “^\uFF00-\uFFFF” 
匹配双字节字符(包括汉字在内):[^\x00-\xff] 
匹配空行的正则表达式:\n[\s| ]*\r 
匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*) \/>/ 
匹配首尾空格的正则表达式:(^\s*)|(\s*$) 
匹配IP地址的正则表达式: (\d+)\.(\d+)\.(\d+)\.(\d+)

vs中批量操作

(按ctrl+H 选上正则表达式)

  • 删除注释 ://.* 替换为空。
  • 删除空行:^\s*\n 替换成空。

三、文件夹中的文件内容正则批量替换

1、使用VSCode文件替换(使用JS引擎)

在VSCode中,使用正则表达式,将网页中的font元素批量更换成font元素

<font (.*?")>((\n|.)*?)</font>

替换成:

<span $1>$2</span>

正则表达式基础与常用验证表达式

2、文件夹中的文件内容正则批量替换

下载小工具:ReplaceAll

正则表达式基础与常用验证表达式

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。


Tags in this post...

Javascript 相关文章推荐
MooTools 1.2介绍
Sep 14 Javascript
JQuery EasyUI 对话框的使用方法
Oct 24 Javascript
javascript实现简单的Map示例介绍
Dec 23 Javascript
Javascript中的高阶函数介绍
Mar 15 Javascript
使用AngularJS 应用访问 Android 手机的图片库
Mar 24 Javascript
微信公众平台开发教程(五)详解自定义菜单
Dec 02 Javascript
jQuery插件FusionCharts实现的Marimekko图效果示例【附demo源码】
Mar 24 jQuery
React中使用collections时key的重要性详解
Aug 07 Javascript
JavaScript数据结构之优先队列与循环队列实例详解
Oct 27 Javascript
微信小程序获取用户信息及手机号(后端TP5.0)
Sep 12 Javascript
vue实现五子棋游戏
May 28 Javascript
jQuery+ajax实现文件上传功能
Dec 22 jQuery
使用compose函数优化代码提高可读性及扩展性
html中两种获取标签内的值的方法
Jun 16 #jQuery
JavaScript前端面试扁平数据转tree与tree数据扁平化
Jun 14 #Javascript
vue如何在data中引入图片的正确路径
Jun 05 #Vue.js
Vue Mint UI mt-swipe的使用方式
Jun 05 #Vue.js
vue @ ~ 相对路径 路径别名设置方式
Jun 05 #Vue.js
vue css 相对路径导入问题级踩坑记录
Jun 05 #Vue.js
You might like
php auth_http类库进行身份效验
2009/03/19 PHP
PHP内存缓存Memcached类实例
2014/12/08 PHP
php使用指定编码导出mysql数据到csv文件的方法
2015/03/31 PHP
探寻Javascript执行效率问题
2014/11/12 Javascript
z-blog SyntaxHighlighter 长代码无法换行解决办法(jquery)
2014/11/16 Javascript
浅谈nodejs中的类定义和继承的套路
2017/07/26 NodeJs
jQuery实现通过方向键控制div块上下左右移动的方法【测试可用】
2018/04/26 jQuery
在ES5与ES6环境下处理函数默认参数的实现方法
2018/05/13 Javascript
详解如何在webpack中做预渲染降低首屏空白时间
2018/08/22 Javascript
NodeJs入门教程之定时器和队列
2019/03/08 NodeJs
使用Webpack提升Vue.js应用程序的4种方法(翻译)
2019/10/09 Javascript
原生JavaScript实现五子棋游戏
2020/11/09 Javascript
[39:02]DOTA2亚洲邀请赛 3.31 小组赛 B组 Mineski vs VGJ.T
2018/04/01 DOTA
[32:26]EG vs IG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python中用Decorator来简化元编程的教程
2015/04/13 Python
Python对多属性的重复数据去重实例
2018/04/18 Python
用python编写第一个IDA插件的实例
2018/05/29 Python
Python抽象和自定义类定义与用法示例
2018/08/23 Python
python使用phoenixdb操作hbase的方法示例
2019/02/28 Python
python aiohttp的使用详解
2019/06/20 Python
python数据处理之如何选取csv文件中某几行的数据
2019/09/02 Python
基于django 的orm中非主键自增的实现方式
2020/05/18 Python
Python代码注释规范代码实例解析
2020/08/14 Python
HTML5网页音乐播放器的示例代码
2017/11/09 HTML / CSS
香蕉共和国Banana Republic官网:美国GAP旗下偏贵族风格服饰品牌
2016/11/21 全球购物
巴西补充剂和维生素购物网站:Natue
2019/06/17 全球购物
新闻专业应届生求职信
2013/10/31 职场文书
洗发水广告词
2014/03/13 职场文书
2014年预备党员端正入党动机思想汇报
2014/09/13 职场文书
四风专项整治工作情况汇报
2014/10/28 职场文书
会计电算化实训报告
2014/11/04 职场文书
文明上网主题班会
2015/08/14 职场文书
祝福语集锦:给百岁老人祝寿贺词
2019/11/19 职场文书
详解Nginx启动失败的几种错误处理
2021/04/01 Servers
redis不能访问本机真实ip地址的解决方案
2021/07/07 Redis
用Java实现简单计算器功能
2021/07/21 Java/Android