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


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 相关文章推荐
网站被黑的假象--ARP欺骗之页面中加入一段js
May 16 Javascript
javascript tips提示框组件实现代码
Nov 19 Javascript
jQuery自定义事件的简单实现代码
Jan 27 Javascript
jQuery动态效果显示人物结构关系图的方法
May 07 Javascript
javascript结合Flexbox简单实现滑动拼图游戏
Feb 18 Javascript
js实现密码强度检测【附示例】
Mar 30 Javascript
图文详解Heap Sort堆排序算法及JavaScript的代码实现
May 04 Javascript
js实现登录框鼠标拖拽效果
Mar 09 Javascript
详解基于electron制作一个node压缩图片的桌面应用
Jan 29 Javascript
React 使用Hooks简化受控组件的状态绑定
Mar 18 Javascript
利用vue-i18n实现多语言切换效果的方法
Jun 19 Javascript
Vue移动端实现图片上传及超过1M压缩上传
Dec 23 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
玩家交还《星际争霸》原始码光盘 暴雪报以厚礼
2017/05/05 星际争霸
php漏洞之跨网站请求伪造与防止伪造方法
2013/08/15 PHP
php实现的递归提成方案实例
2015/11/14 PHP
WordPress过滤垃圾评论的几种主要方法小结
2016/07/11 PHP
IE下写xml文件的两种方式(fso/saveAs)
2013/08/05 Javascript
深入理解javascript的执行顺序
2014/04/04 Javascript
js数组方法扩展实现数组统计函数
2014/04/09 Javascript
js获取字符串字节数方法小结
2015/06/09 Javascript
AngularJS中如何使用$parse或$eval在运行时对Scope变量赋值
2016/01/25 Javascript
使用bootstrap typeahead插件实现输入框自动补全之问题及解决办法
2016/07/07 Javascript
详解Node.js中的事件机制
2016/09/22 Javascript
html、css和jquery相结合实现简单的进度条效果实例代码
2016/10/24 Javascript
Zepto实现密码的隐藏/显示
2017/04/07 Javascript
详解axios在vue中的简单配置与使用
2017/05/10 Javascript
ionic实现底部分享功能
2017/05/11 Javascript
bootstrap paginator分页前后台用法示例
2017/06/17 Javascript
在nginx上部署vue项目(history模式)的方法
2017/12/28 Javascript
原生JS实现的简单小钟表功能示例
2018/08/30 Javascript
vue在index.html中引入静态文件不生效问题及解决方法
2019/04/29 Javascript
Vue通过for循环随机生成不同的颜色或随机数的实例
2019/11/09 Javascript
JavaScript实现简易计算器小功能
2020/10/22 Javascript
Java与Python两大幸存者谁更胜一筹呢
2018/04/12 Python
JavaScript中的模拟事件和自定义事件实例分析
2018/07/27 Python
5款Python程序员高频使用开发工具推荐
2019/04/10 Python
Python任务调度利器之APScheduler详解
2020/04/02 Python
css3进行截取替代js的substring
2013/09/02 HTML / CSS
英国领先的男装设计师服装独立零售商:Repertoire Fashion
2020/10/19 全球购物
Pharmacy Online中文直邮网站:澳洲大型药房
2020/06/27 全球购物
专科毕业生学习生活的自我评价
2013/10/26 职场文书
投标承诺书范本
2014/03/27 职场文书
网络营销策划方案
2014/06/04 职场文书
小学毕业典礼演讲稿
2014/09/09 职场文书
英语课前三分钟演讲稿(6篇)
2014/09/13 职场文书
如何计划开一家便利店?
2019/07/31 职场文书
​(迎国庆)作文之我爱我的祖国
2019/09/19 职场文书
CSS实现鼠标悬浮动画特效
2023/05/07 HTML / CSS