正则表达式入门小结

正则表达式语言由俩种基本字符组成:元字符和普通字符。

元字符,即特殊符号,并不代表本身的字符意义,根据其在正则表达式语言中代表的特殊含义来匹配目标字符。

普通字符,即代表本身的字符意义,如1-9,a-z等。

1、基础且常用的特殊字符小结

                    代表匹配次数的元字符

{n} 重复n次
{n,m} 重复n到m次
a? 字符 a <=1次,相当于a{0,1}
a+ 字符a >=1次,相当于a{1,}
a* 字符a >=0次,相当于a{0,}
( ) 匹配目标值的分组,每个组自动有组号,从左到右组号为1,2,3...
a{4}
a{1,5}
匹配字符a 长度为4次
匹配字符a 长度1~5次
a.*b 贪婪模式,匹配a和b之间的所有字符
a.*?b 懒惰模式,尽量少的匹配a和b之间的字符,最少为ab
*? 重复任意次,但尽可能少重复
+? 重复1次或更多次,但尽可能少重复
?? 重复0次或1次,但尽可能少重复
{n,m}? 重复n到m次,但尽可能少重复
{n, }? 重复n次以上,但尽可能少重复

                    代表匹配具体字符

. 匹配除换行符以外的任意字符
\w 任意一个字母、数字或下划线,即A~Z,a~z,0~9,_
\W 任意一个非字母或数字或下划线的字符
\s 任意一个空格、制表符、换页符等空白字符
\S 任意一个非空白符的字符
\d 0~9任意一个数字
\D 任意一个非数字
\b 代表字符在单词的开始或结束位置,
如\bF,c\b  代表以F开头的单词或c结尾的单词
\B 代表字符在非单词开始或结束位置,
如\Bz. 匹配"add czppp",结果是zp
[a-k0-9] a~k之间任意一个字符 或 0~9之间任意一个数字,[]代表范围内的字符
[^fuk] 匹配f、u或k之外的任意一个字符,[^ ] 代表除..之外的字符
^a 匹配的字符a在最开头位置
a$ 匹配的字符a在末尾位置

                转义字符

\r 代表回车符
\n 代表换行符
\t 代表制表符

2、元字符规律小结

  • \与小写字母组合代表所包含意义匹配字符,大写字母即变成取反,如\d、\D 或 \w、\W。
  • 元字符与?组合,均是尽可能少的匹配,如+? 或 *? 或 ?? 或 {5,}? 。
  • 要元字符代表普通字符,需要再元字符前加\。如\^ 或 \$ 或 \* 等。

3、参考例子及练习

  • 贪婪模式&懒惰模式参考

当有字符串:aabab

① a.*b 匹配到的是:aabab(贪婪模式)

② a.*?b 匹配到的是:aab及ab(懒惰模式)

③ a.+?b匹配到的是:aab

  • 在“where are you"中匹配单词are
\bare\b
  • 输入的字符在a-g之间并且最大长度为3最小长度为1
[a-g]{1,3}
  • 匹配3位区号-8位电话号码,如010-12345678
^\d{3}-\d{8}$
  • 验证最小长度为3最大长度为7的数字
\d{3,7}
  • 验证如INV190203 或 inv820830,前3位不区分大小写的英文字母,剩余8位是数字
[a-zA-Z]{3}\d{8}
  • 匹配常用URL规则(以www开头,域名是字母数字,长度1-15,以.com或者.org结束)
^www[.][a-zA-Z\d]{1,15}[.](com|org)$
  • 匹配常用email规则(字母数字下划线,长度3-15)@(字母数字,长度2~4).(字母,长度2~4)
^\w{3,15}@[a-zA-Z\d]{2,4}\.[a-zA-Z]{2,4}$
  • 验证值在0-25的数字
(([0-9])|([0-1][0-9])|([0-2][0-5]))$
  • 验证格式为 YYYY/MM/DD 或 YYYY-MM-DD 或 YYYY.MM.DD 的日期

① 年YYYY允许用户输入年份1900-2099.:(19\d\d|20\d\d)

②月MM允许输入01~12或者1~12:(\d|0\d|1[0-2])

③日DD允许输入01~31或者1~31:(\d|0\d|1\d|2\d|3[0-1])

④连接符:[-/.]

结果如下:

^(19\d\d|20\d\d)[-/.](\d|0\d|1[0-2])[-/.](\d|0\d|1\d|2\d|3[0-1])$

 

原文地址:https://www.cnblogs.com/cheerjude/p/10115446.html

时间: 2024-11-10 10:52:16

正则表达式入门小结的相关文章

正则表达式入门(c#)

本文是对该教程的学习练习 http://www.jb51.net/tools/zhengze.html 1.\bContent\b static void Main(string[] args) { string str = "Act game - Uncharted3, act Game - God of war"; Regex rex = new Regex(@"\bact\b"); var result = rex.Match(str); if (result

正则表达式入门学习

\b-元字符,代表单词的开头或结尾,也就是单词的分界处. \bHi\b     下列未进行说明的都是元字符. .  匹配除了换行符以外的任意字符. * 指定*前边的内容可以连续重复使用任意次以使整个表达式得到匹配.(不包含换行的字符) \bHi\b.*\bLucy\b \d 匹配一位数字(0或1或2......或9)  0\d\d-\d\d\d\d\d\d\d\d - 不是元字符 ,只匹配它本身. 避免重复 0\d{2}-\d{8}  {2}({8})指前面\d必须连续重复匹配2次(8次). \

线段树入门小结

QUE:线段树? 称谓: 从刘汝佳的书中得知,"这种数据结构在学术界没有统一的术语,但线段树是最常见的叫法.其他叫法包括区间树(interval tree).范围树(range tree)等,但这些属于在特定的场合(如计算几何)中有着特殊的意义".怎么叫看读者的心情,以下统一用线段树称呼. 先来作一些了解: 线段树是一棵二叉树,它的左右儿子也都是一棵线段树.(定义) 线段树也叫区间树,为什么叫它区间树呢?因为线段树是一种基于区间的数据结构. 线段树的每个节点代表一个区间 [L,R],其

php正则表达式入门-常用语法格式

原文地址:http://www.jbxue.com/article/24467.html 分享下php正则表达式中的一些常用语法格式,用于匹配字母.数字等,个人感觉还不错. 语法格式:位于定界符"/"之间.较为常用的元字符包括: “+”, “*”,以及 “?”.其中, “+”元字符规定其前导字符必须在目标对象中连续出现一次或多次, “*”元字符规定其前导字符必须在目标对象中出现零次或连续多次, 而“?”元字符规定其前导对象必须在目标对象中连续出现零次或一次. /jim{2,6}/<

Python正则表达式入门

Python正则表达式入门 一. 正则表达式基础 1.1. 简单介绍 正则表达式并不是Python的一部分. 正则表达式是用于处理字符串的强大工具, 拥有自己独特的语法以及一个独立的处理引擎, 效率上可能不如str自带的方法, 但功能十分强大. 得益于这一点, 在提供了正则表达式的语言里, 正则表达式的语法都是一样的, 区别只在于不同的编程语言实现支持的语法数量不同; 但不用担心, 不被支持的语法通常是不常用的部分. 如果已经在其他语言里使用过正则表达式, 只需要简单看一看就可以上手了. 下图展

有shi以来最详细的正则表达式入门教程

原文:有shi以来最详细的正则表达式入门教程 本篇文章文字内容较多,但是要学习正则就必须耐心读下去,正则表达式是正则表达式其实并没有想像中的那么困难,但是想要熟练的掌握它,还是需要下功夫勤加练习的.这里讲一些正则表达式的语法和学习方法,大家还要多参考前辈们写的正则表达式,才能达到熟练精通的地步. 一.正则表达式到底是什么东西?                                                  正则表达式,又称正规表示法.常规表示法(英语:Regular Expre

正则表达式入门教程&amp;&amp;经典Javascript正则表达式----share

前言 例子: ^[email protected]+\\..+$ 这样的代码曾经多次把我自己给吓退过.可能很多人也是被这样的代码给吓跑的吧.继续阅读本文将让你也可以自由应用这样的代码. 正文 教程:正则表达式30分钟入门教程 一个学习正则表达式不错的教程,对正则表达式有兴趣,但不太了解的童鞋可以参考下 以下内容摘自 常用JQuery数字类型验证正则表达式整理  和    经典Javascript正则表达式         [  留个备份 :) ~~  ]     常用JQuery数字类型验证正则

JavaScript正则表达式详解(一)正则表达式入门

JavaScript正则表达式是很多JavaScript开发人员比较头疼的事情,也很多人不愿意学习,只是必要的时候上网查一下就可以啦~本文中详细的把JavaScript正则表达式的用法进行了列表,希望对于大家学习JavaScript正则表达式有一定的帮助. 建立正则表达式对象语法 re = new RegExp(/pattern/[flags]) flags 参数说明: g (全文查找出现的所有 pattern) i (忽略大小写) m (多行查找) 普通字符 描述 \ 将下一个字符标记为一个特

mybatis入门小结(六)

入门小结---查询 1.1.1.1.1 #{}和${} #{}表示一个占位符号,通过#{}可以实现preparedStatement向占位符中设置值,自动进行java类型和jdbc类型转换,#{}可以有效防止sql注入. #{}可以接收简单类型值或pojo属性值. 如果parameterType传输单个简单类型值,#{}括号中可以是value或其它名称. ${}表示拼接sql串,通过${}可以将parameterType 传入的内容拼接在sql中且不进行jdbc类型转换, ${}可以接收简单类型