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


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 相关文章推荐
js控制框架刷新
Aug 01 Javascript
JavaScript学习笔记之获取当前目录的实现代码
Dec 14 Javascript
中文字符串截取的js函数代码
Apr 17 Javascript
jQuery使用empty()方法删除元素及其所有子元素的方法
Mar 26 Javascript
js数组的五种迭代方法及两种归并方法(推荐)
Jun 14 Javascript
jQuery中 DOM节点操作方法大全
Oct 12 jQuery
基于Require.js使用方法(总结)
Oct 26 Javascript
微信小程序实现动态设置页面标题的方法【附源码下载】
Nov 29 Javascript
node puppeteer(headless chrome)实现网站登录
May 09 Javascript
js类的继承定义与用法分析
Jun 21 Javascript
vue使用@scroll监听滚动事件时,@scroll无效问题的解决方法详解
Oct 15 Javascript
Vue路由 重定向和别名的区别说明
Sep 09 Javascript
使用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 iconv() : Detected an illegal character in input string
2010/12/05 PHP
windows下zendframework项目环境搭建(通过命令行配置)
2012/12/06 PHP
详解PHP版本兼容之openssl调用参数
2018/07/25 PHP
解决laravel-admin 自己新建页面里 js 需要刷新一次的问题
2019/10/03 PHP
解决laravel id非自增 模型取回为0 的问题
2019/10/11 PHP
Laravel等框架模型关联的可用性浅析
2019/12/15 PHP
JavaScript中setAttribute用法介绍
2013/07/20 Javascript
JSON+Jquery省市区三级联动
2016/01/13 Javascript
对比分析Django的Q查询及AngularJS的Datatables分页插件
2017/02/07 Javascript
Js利用prototype自定义数组方法示例
2017/10/20 Javascript
Node.js中环境变量process.env的一些事详解
2017/10/26 Javascript
JavaScript树的深度优先遍历和广度优先遍历算法示例
2018/07/30 Javascript
javascript获取元素的计算样式
2019/05/24 Javascript
js实现简单的贪吃蛇游戏
2020/04/23 Javascript
微信小程序自定义扫码功能界面的实现代码
2020/07/02 Javascript
浅谈vue中get请求解决传输数据是数组格式的问题
2020/08/03 Javascript
[23:21]Ti4 冒泡赛第二轮DK vs C9 2
2014/07/14 DOTA
Python自动连接ssh的方法
2015/03/07 Python
django实现分页的方法
2015/05/26 Python
python动态网页批量爬取
2016/02/14 Python
python引入导入自定义模块和外部文件的实例
2017/07/24 Python
Python实现将json文件中向量写入Excel的方法
2018/03/26 Python
Python实现注册、登录小程序功能
2018/09/21 Python
Python实现的企业粉丝抽奖功能示例
2019/07/26 Python
python 扩展print打印文件路径和当前时间信息的实例代码
2019/10/11 Python
SK-II神仙水美国官网:SK-II美国
2020/02/25 全球购物
静态变量和实例变量的区别
2015/07/07 面试题
员工年终演讲稿
2014/01/03 职场文书
国际贸易专业个人职业生涯规划
2014/02/15 职场文书
通信工程求职信
2014/07/16 职场文书
2015元旦家电促销活动策划方案
2014/12/09 职场文书
张丽莉观后感
2015/06/16 职场文书
初中物理教学反思
2016/02/19 职场文书
送给火锅店的创意营销方案!
2019/07/08 职场文书
python opencv通过4坐标剪裁图片
2021/06/05 Python
使用JS实现简易计算器
2021/06/14 Javascript