正则表达式详细基础实例解析

正则表达式是我们验证是经常见到的!下面我和大家一起分享一下如何更简单的理解正则表达式。
首先,说一下正则名字的命名:

这个单词我想大家都会眼熟吧!“Regular Expression”。  Regular Expression的“Regular”一般被译为“正则”、“正规”、“常规”。此处的“Regular”即是“规则”、“规律”的意思,Regular Expression即“描述某种规则的表达式”之意,也就是我们所说的正则表达式。其实正则表达式说白了就是用来规范某种行为的!或者说是一种约束,就好比我们必须遵守交通规则是的。
我个人感觉如果想把正则搞懂、搞明白也不难!只要把其中的一些必须记住的东西外,再加上灵活的运用,这样就可以了!
好的! 接下来我就来深入到正则的主体,
我们来先看看正则关键的东西,如果把这些东西都搞明白了!一般在项目中就没有问题了!

第一个“”
这个是俗称转义字符,就是把一个字符标记为一个特殊字符或者原义字符。如:“n” 就是匹配“n”  。如果是“”  则是换行符。
有人该问了如果我就是想写“”这个斜杠呢? 这个也很简单啊!就直接是这样写“\”就可以了!为什么写两个“\”呢!就是为了区分。

第二个“^”
这个是俗称开始字符,就是说准备写正则了!如果设置了RegExp对象的Multiline属性,^也匹配“”或者“”之后的位置。

第三个“$”
这个是俗称结束字符,也可以说成收尾(很不专业的解释)!如果设置了RegExp对象的Multiline属性,$也匹配“”或“”之前的位置

第四个“*”
这个是匹配前面的子表达式零次或者多次。如:zo*能匹配“z”以及“zo”或者“zoo”。这个“*”也就是相当于{0,}

第五个“+”
这个是匹配前面的子表达式一次或者多次。如:“zo+”能匹配“zo”以及“zoo”或者“zooo”。这个“*”和“+”差不多一个是开始零次一个是一次。这个“+”相当于{1,}。

第六个“?”
这个是匹配前面的子表达式零次或者一次。如:“do(es)?”可以匹配“do”或者“does”。这个问号的意思就是要么匹配零次要么匹配一次!

第七个“{}”
这个符号是匹配多少次的,
1,{n}匹配确定的n次,n是一个非负整数,如:“o{2}”这个的意思就是匹配两个“oo”, 如: good,food等!不过不能匹配body,因为就一个o!
2,{n,}匹配至少n次,n是个非负整数,如:“o{2,}” 这个的意思就是匹配两个以上的“oo”,如:good,goood,gooood等。“o{1,}”等价于“o+”。“o{0,}”这个等价于“o*”。
3,{n,m}这个是最少匹配n次最多匹配m次,n和m都是非负整数,其中n

第八个“?”特殊用法
当该字符紧跟在任何一个其他限制符(*,+,?,{n},{n,},{n,m})后面时,匹配模式是非贪婪的。所谓非贪婪就是以最少为好,非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串“oooo”,“o+?”将匹配单个“o”,而“o+”将匹配所有“o”。

第九个“.”
匹配除换行符“”之外的任何单个字符。如果想匹配换行符“”再内的任何字符,就使用“(.|)”的模式。

第十个“pattern”
这个“pattern”不是很好理解,刚一看比较晕!不过我对这个的理解如下希望对大家有用:
1. ?:pattern 匹配pattern但不获取匹配结果, 例如:k(?:1|2|3) k在123中任意匹配一个,例子:k1|k2
2. ?=pattern 正向肯定预查 例如:K(?=1|2|3) 当K匹配123中任意一个时 选择K  例子:k1中的k或者k2中的k
3. ?!pattern 正向否定预查 例如:k(?!1|2|3) 当K不匹配123中的任意一个时 选择K 例子:不匹配k1中的k,不过可以是k4,k5
4. ?5. ?

第十一个“|”
这个符号就是或的意思,比如:“f|good”能匹配“f”或“good”,如果这样呢“(f|g)ood”则匹配“food”或“good”。

第十二个“[]” 
这个符号是字符集和的意思,和“{}”看上去差不多,不过意义可就差多了。

第十三个“()”
这个符号式数组或者是集合

1、[xyz]  匹配所包含的任意一个字符。就是说三个之中选择一个。例子:“[abc]”可以匹配“company”中的“a”不过不可以匹配“beautiful”因为用到了里面的两个字母。
2、[^xyz] 这个是负值字符集合,也可以说成是“非”。例子:“[^abc]”可以匹配“drop”等!只要单词里没有“abc”这三个字母就可以。
3、[a-z] 字符的范围。匹配指定范围内的任意字符。例如,“[a-z]”可以匹配“a”到“z”范围内的任意小写字母字符。也可以写成“[0-9]”这个是匹配0到9直接打数字。
4、[^a-z] 这个我想不用说大家就应该想到是什么意思了,对了!就是你想的那个意思:不在“a”到“z”范围内的任意字符,一开始我看到这个的时候以为是不在a到z之间的字母呢!我说如果不在a到z之间的字母那只有汉语中的“ü” 了!这个好像读“喻”!呵呵! 大家看清楚了啊!是字符,不是字母。

下面大家和我一起看看“”和字母所匹配的特殊含义,
“” 这个是匹配一个单词的边界,也就是指单词和空格间的位置。例如,“er”可以匹配“never”中的“er”,但不能匹配“verb”中的“er”。这个我感觉比较好记大家可以这样记:边界的边是b开头的!
“B”这个是和“”是相反的,匹配非单词边界。“erB”能匹配“verb”中的“er”,但不能匹配“never”中的“er”。
“d”这个是用的比较多!我建议大家对这个多记记,这个是匹配数字字符,相当于[0-9]。
“D”这个也很好理解,也是相反的意思就是说不是数字的,相当于[^0-9]。
“”这个是匹配一个换页符。这个不做过多解释了!下面的四个也就过多不做过多解释了。只要记住就可以了!在项目中会用就可以了!
“”这个是匹配一个换行符。
“”这个是匹配一个回车符。
“”这个是匹配一个制表符。
“”这个是匹配一个垂直制表符。
“s”这个匹配任何空字符,匹配任何空白字符,包括空格、制表符、换页符等等。等价于[ ]。也就是这个把上面的五个都包括了!
“S”这个是非空白字符等价于[^ ]。
说到这里大家都可能感觉到正则其实就是这些字符嘛!而且有些是可以靠我们的逻辑思维推理出来的,而且有些是重复的,只要大家能够灵活的运用就可以了。

“w”这个是匹配包括下划线的任何单词字符。等价于“[A-Za-z0-9_]”。这个在实际中用的也挺多的也建议大家多记记这个。

“W”这个是匹配非单词数字字符。等价于“[^A-Za-z0-9_]”。

好的!基本上要记得就是这么多了!这些可能有些正则高手该说了“你这个根本不全啊?” 我先提前解释一下吧,我所写的只是一些基础的,在项目中常见的,比较实用的,基本上这些在项目中就可以运用自如了。
接下来呢,和大家做一些实质性的东西,和大家一起解析一些正则表达式。
比如这个正则:^([0-1]?[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$
这个正则我想对正则高手来说一看就知道是什么了。当然一些逻辑思维比较强的看两眼也就知道这个是什么了,没错就是时间正则。

OK 我们来解析一下这个正则从这个“^”开始,“([0-1]?[0-9]|2[0-3])”是个组,“[0-1]?”这个问号的作用是0或1最多有零个或者一个,“[0-9]”0至9之间任意一个数,“|”这个是“或”的意思,就是说不是“[0-1]?[0-9]”就是“2[0-3]”,“2[0-3]” 这个是前面的2就是代表2,后面0至3是0到3之间任意一个数,“:”就是代表“:”,“([0-5][0-9])”也是个组,“[0-5]”是0到5之间任意一个数,“[0-9]”是0到9之间任意一个数,“:”也是本意,“([0-5][0-9])”也是个组,“[0-5]”是0到5之间任意一个数,“[0-9]”是0到9之间任意一个数,“$”这个是结束符。
再和大家解析一个小数

比如:^[1-9]+d*(.[0-9]{1,2})?|0(.[0-9]{1,2})?$ 
“^”是开始符,“[1-9]+”其中“+”的意思是1到9之间最少有一个或者多个,“d*”这个“d”是数字,这个“*”是最少有零个数字或者有多个数字,“(.[0-9]{1,2})?”这个组里面“.”是原意点,“[0-9]{1,2}” 0到9之间有一个或者有两个数字,后面这个问号“?”意思是有零个或者一个它“(.[0-9]{1,2})”。“|” 是要么是“[1-9]+d*(.[0-9]{1,2})?”要么是“0(.[0-9]{1,2})?”。“0(.[0-9]{1,2})?”这个里面的0是原意,“(.[0-9]{1,2})?”这个组里面“.”是原意点,“[0-9]{1,2}” 0到9之间有一个或者有两个数字,后面这个问号“?”意思是有零个或者一个它“(.[0-9]{1,2})”。

下面我例举出一些常见的正则表达式来给大家说说:

^[1-9]d*$ //匹配正整数   
^-[1-9]d*$ //匹配负整数   
^-?[1-9]d*$ //匹配整数   
^[1-9]d*|0$ //匹配非负整数(正整数 + 0)   
^-[1-9]d*|0$ //匹配非正整数(负整数 + 0)   
^[1-9]d*.d*|0.d*[1-9]d*$ //匹配正浮点数   
^-([1-9]d*.d*|0.d*[1-9]d*)$ //匹配负浮点数   
^-?([1-9]d*.d*|0.d*[1-9]d*|0?.0+|0)$ //匹配浮点数   
^[1-9]d*.d*|0.d*[1-9]d*|0?.0+|0$ //匹配非负浮点数(正浮点数 + 0)   
^(-([1-9]d*.d*|0.d*[1-9]d*))|0?.0+|0$ //匹配非正浮点数(负浮点数 + 0)
^[a-zA-Z][a-zA-Z0-9_]{4,15}$  //匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线)
^s*|s*$  //匹配首尾空白字符的正则表达式
s*  //匹配空白行的正则表达式
[^-�]  //匹配双字节字符(包括汉字在内)
[u4e00-u9fa5]  //匹配中文字符的正则表达式

用户名
^[a-z0-9_-]{3,16}$

密码
^[a-z0-9_-]{6,18}$

十六进制值
^#?([a-f0-9]{6}|[a-f0-9]{3})$

电子邮箱
^([a-z0-9_.-]+)@([da-z.-]+).([a-z.]{2,6})$
^[a-zd]+(.[a-zd]+)*@([da-z](-[da-z])?)+(.{1,2}[a-z]+)+$

URL
^(https?://)?([da-z.-]+).([a-z.]{2,6})([/w .-]*)*/?$

IP 地址
((2[0-4]d|25[0-5]|[01]?dd?).){3}(2[0-4]d|25[0-5]|[01]?dd?)


^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$

HTML 标签
^(.*)|s+/>)$

以上便是关于正则表达式的一些基础知识配合实际例子的讲解,希望可以帮助到对正则表达式感到迷惑的同学,如有错误请指出。

更多相关问题请访问PHP中文网:PHP视频教程

以上就是正则表达式详细基础实例解析的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/3164835.html

(0)
上一篇 2025年3月30日 11:54:17
下一篇 2025年3月30日 11:55:27

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • JS+Regex验证身份证号

    这次给大家带来JS+Regex验证身份证号,JS+Regex验证身份证号的注意事项有哪些,下面就是实战案例,一起来看一下。 简言 在做用户实名验证时,常会用到身份证号码的正则表达式及校验方案。本文列举了两种验证方案,大家可以根据自己的项目实…

    2025年3月31日
    200
  • 正则里B和使用详解

    这次给大家带来正则里B和使用详解,正则里B和使用的注意事项有哪些,下面就是实战案例,一起来看一下。 对于正则表达式的中B和 有些地方会出现弄不懂的情况 或许你看了下面这篇博客 你就能够对B和认识加深了 根据查看API可以知道 B和都是边界匹…

    2025年3月31日
    100
  • 在Linux内正则使用技巧

    这次给大家带来在linux内正则使用技巧,在linux内正则使用的注意事项有哪些,下面就是实战案例,一起来看一下。 1、组成 普通字符:普通字符串,没有特殊含义特殊字符:在正则表达式中具有特殊的含义正则表达式中常见的meta字符【特殊字符】…

    编程技术 2025年3月31日
    100
  • 深入详解PHP正则表达式转义

    正则表达式是一种用于匹配字符串的强大工具,它可以方便地进行字符串操作。然而,在编写正则表达式的过程中,有时可能需要匹配一些特殊字符,如“”,“|”、“{”等,这些字符在正则表达式中具有特殊含义,需要进行转义。 PHP中提供了一些用于转义正则…

    编程技术 2025年3月30日
    200
  • 如何在PHP中使用正则表达式函数

    在php中,正则表达式是一种非常强大的工具,可用于匹配文本中的模式。php提供了许多内置函数来操作正则表达式,使其更加方便快捷。 在本文中,我们将学习如何在PHP中使用正则表达式函数,包括以下主题: 正则表达式语法preg_match函数p…

    编程技术 2025年3月30日
    100
  • PHP中如何使用正则表达式进行数据验证?

    在 php 编程中,数据验证是一个非常重要的任务。当我们接收外部输入数据(例如用户的表单提交)时,我们需要在使用这些数据之前,对其进行验证,确保其格式正确并符合我们的要求。其中一种非常实用的验证方式就是使用正则表达式。 正则表达式是一种强大…

    编程技术 2025年3月30日
    100
  • PHP语言开发中如何避免正则表达式错误处理?

    php是一门广泛使用的编程语言,其强大的正则表达式功能是开发人员广泛使用的工具之一。正则表达式可以用来匹配、搜索和替换字符串,它具有强大的表达能力和快速的运行速度。然而,正则表达式也有其缺陷和限制,而且在开发过程中出现错误处理问题也是很常见…

    编程技术 2025年3月30日
    200
  • Java语言正则表达式的使用方法

    java语言正则表达式的使用方法 正则表达式是一种强大的文本处理工具,可以用来匹配和验证文本。在Java语言中,也可以使用正则表达式来实现字符串的匹配和处理。本文将介绍java语言正则表达式的使用方法,涵盖正则表达式的基础知识,常用的正则表…

    编程技术 2025年3月30日
    200
  • 正则表达式函数,让你更好地处理文本

    正则表达式(regular expression)是一种用于匹配文本模式的工具,通过一些特定的语法规则,可以在文本中搜索和匹配符合要求的内容,这种搜索技术被广泛应用于文本处理、编程、数据清洗等领域。 在实际的文本处理中,常常需要抽取符合特定…

    编程技术 2025年3月30日
    200
  • 如何在 PHP 中使用正则表达式来匹配 Apache 访问日志中的 IP 地址

    apache 访问日志是 apache 服务器记录客户端请求和服务器响应的一种形式。该日志中包含了每个请求的详细信息,包括客户端的ip地址、请求的时间、请求的url地址等信息。在php开发过程中,我们有时需要从访问日志中获取客户端的ip地址…

    编程技术 2025年3月30日
    100

发表回复

登录后才能评论