正则表达式快速入门

本文档详细介绍了正则表达式的基础用法和进阶技巧,包括数字、字母、特殊字符的匹配,长字符串表示,贪婪与非贪婪匹配,分组以及常见正则表达式模式。此外,还讲解了如何使用正则表达式进行电话号码、邮箱、身份证等的验证。
摘要由CSDN通过智能技术生成

正则表达式快速入门

参考文档 RegExp - 廖雪峰的官方网站 (liaoxuefeng.com)

基础用法

  • \d 匹配一个 数字
  • \D 非数字
  • \w 匹配一个字母和数字
  • \W 非单词字符
  • . 匹配任意一个字符
  • \s 匹配一个空白符 ,包括\b,\t ,tab键和space键
  • \S 非空白字符
  • 其他任意字符可以用转义字符匹配,例如 ’,‘可以用 , 来转义匹配 ‘-’ 可以用==\-==或者使用字符集[-],[,]表示

表示长字符串

  • 一个匹配符后面加一个==+号则代表贪婪匹配,至少匹配一个相对应的字符,例如\s+匹配至少一个空格或\t,\d+== 代表至少匹配一个数字

  • *号表示匹配任意个字符长度(也包括0个字符)

  • ==?==表示可能是零个或者一个字符

  • =={n}表示可以匹配n个字符,{n,m}==表示可以匹配n~m个字符

基础用法与长字符表示相结合

例子

\d{5}             //表示需要匹配五个数字
\@?         //表示可能有一个"@"符号或者没有
\w{4,9}        //表示需要匹配4~9个数字和单词
[1-9][0-9]{4,} //({4,}表示[0-9]的数字个数不低于4个)

进阶

  • 用==[]==符号进行限定范围进行匹配
[0-3][0-9]//表示第一位数字从0~3匹配,第二位数字在0~9匹配;
[0-9a-zA-Z\_]//可以匹配一个数字、字母或者下划线;
[0-9a-zA-Z\_]+//可以匹配至少由一个数字、字母或者下划线组成的字符串,比如'a100','0_Z','js2015'等等;
[a-zA-Z\_\$][0-9a-zA-Z\_\$]*//可以匹配由字母或下划线、$开头,后接任意个由一个数字、字母或者下划线、$组成的字符串,也就是JavaScript允许的变量名;
[a-zA-Z\_\$][0-9a-zA-Z\_\$]{0, 19}//更精确地限制了变量的长度是1-20个字符(前面1个字符+后面最多19个字符)
[abc]与[a-c]等价     
[^abc]   //的^表示取反  表示不是abc的其他字符
在[]中特殊字符失去特殊含义  若要使用,先在前面加上反斜杠==后面补充==

  • A|B 匹配A或B ,例如
(H|h)ello,(W|w)orld!
//可得"hello,world!"或"Hello,World!"或"Hello,world!"或"hello,World!"
  • 一行正则表达式需要一个开头和结尾 ,而==^$==则可以表示这俩个作用

  • ^表示一行正则表达式的开头

  • $表示一行正则表达式的结束

    ^abc$   //只能匹配abc
    

补充

请添加图片描述

分组

在正则表达式中可以使用()来进行分组

//在JavaScript中  exec函数用于分离分组为数组类型
var re = /^(\d{3})-(\d{3,8})$/;
re.exec('010-12345'); // ['010-12345', '010', '12345']
re.exec('010 12345'); // null
//这样就能快速提取重要信息
var re = /^(0[0-9]|1[0-9]|2[0-3]|[0-9])\:(0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]|[0-9])\:(0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]|[0-9])$/;
re.exec('19:05:30'); // ['19:05:30', '19', '05', '30']

贪婪匹配

var re = /^(\d+)(0*)$/;
re.exec('102300'); // ['102300', '102300', '']
//后面的0不能被提取到,因为被\d+提取了
//前面的\d+太贪婪了
//非贪婪匹配
var re = /^(\d+?)(0*)$/;
re.exec('102300'); // ['102300', '1023', '00']

使    *+?{m,n}       变成非贪婪匹配
*?+???{m,n}?

特殊组合:

([\s\S]*?) == ([.\n]*?) == re.findall(‘.*?‘, re.S)
万能正则表达式 (加‘?’表示懒惰模式,尽可能最小长度匹配; 不加‘?’表示贪婪模式,尽可能最大长度匹配)
\s\S : 空白字符+非空白字符,即表示所有字符 all, == ’ .\n ‘(.表示除换行符之外的任意字符,\n表示换行符)
re.S: 即DOTAALL 点匹配任意模式,改变.的行为,可以匹配换行符


常用正则表达式

转载 验证数字的正则表达式集 - steven_2005 - 博客园 (cnblogs.com)

验证数字:^[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]*$

验证非负整数(正整数 + 0) ^\d+$

验证非正整数(负整数 + 0) ^((-\d+)|(0+))$

验证长度为3的字符:^.{3}$

验证由26个英文字母组成的字符串:^[A-Za-z]+$

验证由26个大写英文字母组成的字符串:^[A-Z]+$

验证由26个小写英文字母组成的字符串:^[a-z]+$

验证由数字和26个英文字母组成的字符串:^[A-Za-z0-9]+$

验证由数字、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-./?%&=]*)?$ ;^[a-zA-z]+://(w+(-w+)*)(.(w+(-w+)*))*(?S*)?$

验证电话号码:^(\(\d{3,4}\)|\d{3,4}-)?\d{7,8}$:–正确格式为:XXXX-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。

整数:^-?\d+$

非负浮点数(正浮点数 + 0):^\d+(\.\d+)?$

正浮点数 ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$

非正浮点数(负浮点数 + 0) ^((-\d+(\.\d+)?)|(0+(\.0+)?))$

负浮点数 ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$

([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$

非正浮点数(负浮点数 + 0) ^((-\d+(\.\d+)?)|(0+(\.0+)?))$

负浮点数 ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$

浮点数 ^(-?\d+)(\.\d+)?$

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值