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


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 相关文章推荐
Date对象格式化函数代码
Jul 17 Javascript
javascript针对DOM的应用分析(三)
Apr 15 Javascript
javascript日期对象格式化为字符串的实现方法
Jan 14 Javascript
javascript中in运算符用法分析
Apr 28 Javascript
js以分隔符分隔数组中的元素并转换为字符串的方法
Nov 16 Javascript
AngularJS基于ngInfiniteScroll实现下拉滚动加载的方法
Dec 14 Javascript
基于node.js依赖express解析post请求四种数据格式
Feb 13 Javascript
使用gulp搭建本地服务器并实现模拟ajax
Apr 05 Javascript
分析javascript中9 个常见错误阻碍你进步
Sep 18 Javascript
分享Angular http interceptors 拦截器使用(推荐)
Nov 10 Javascript
vue实现购物车选择功能
Jan 10 Javascript
React实现阿里云OSS上传文件的示例
Aug 10 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
2020年4月放送!《Princess Connect Re:Dive》制作组 & 角色声优公开!
2020/03/06 日漫
PHP中date()日期函数有关参数整理
2011/07/19 PHP
PHP求小于1000的所有水仙花数的代码
2012/01/10 PHP
php 解析xml 的四种方法详细介绍
2016/10/26 PHP
PHP实现多图上传(结合uploadify插件)思路分析
2016/11/30 PHP
php实现的中文分词类完整实例
2017/02/06 PHP
javascript 数组的方法集合
2008/06/05 Javascript
js 跨域和ajax 跨域问题小结
2009/07/01 Javascript
Extjs实现进度条的两种便捷方式
2013/09/26 Javascript
javascript页面上使用动态时间具体实现
2014/03/18 Javascript
js获取 type=radio 值的方法
2014/05/09 Javascript
JavaScript中的各种操作符使用总结
2016/05/26 Javascript
详解vue-router2.0动态路由获取参数
2017/06/14 Javascript
详解Angular Reactive Form 表单验证
2017/07/06 Javascript
详解React Native开源时间日期选择器组件(react-native-datetime)
2017/09/13 Javascript
nodeJS模块简单用法示例
2018/04/21 NodeJs
关于Vue Router中路由守卫的应用及在全局导航守卫中检查元字段的方法
2018/12/09 Javascript
webpack-url-loader 解决项目中图片打包路径问题
2019/02/15 Javascript
解决vue数据不实时更新的问题(数据更改了,但数据不实时更新)
2020/10/27 Javascript
Python实现SMTP发送邮件详细教程
2021/03/02 Python
django manage.py扩展自定义命令方法
2018/05/27 Python
python xlsxwriter创建excel图表的方法
2018/06/11 Python
对TensorFlow的assign赋值用法详解
2018/07/30 Python
python仿evething的文件搜索器实例代码
2019/05/13 Python
基于python实现的百度新歌榜、热歌榜下载器(附代码)
2019/08/05 Python
python异常处理try except过程解析
2020/02/03 Python
Python解释器及PyCharm工具安装过程
2020/02/26 Python
python能在浏览器能运行吗
2020/06/17 Python
ubuntu16.04升级Python3.5到Python3.7的方法步骤
2020/08/20 Python
css3.0 图形构成实例练习二
2013/03/19 HTML / CSS
Guess欧洲官网:美国服饰品牌
2019/08/06 全球购物
日本即尚网:JSHOPPERS.com(支持中文)
2019/12/03 全球购物
《商鞅南门立木》教学反思
2014/02/16 职场文书
最美乡村医生事迹材料
2014/06/02 职场文书
pytorch 使用半精度模型部署的操作
2021/05/24 Python
详解在SQLPlus中实现上下键翻查历史命令的功能
2022/03/18 SQL Server