计算机程序设计

PHP(正则表达式) - 是什么呢? 实例和检查的正则表达式

当与任何现代的编程语言文字工作,开发人员不断地与输入验证符合所需图案的目标达到,搜索和替换测试片段和其他类型的字符信息处理操作。 开发自己的验证算法导致时间上的损失,在其发展和现代化建设的代码兼容性和复杂性。

互联网和网页设计语言的迅速发展需要的文本处理的通用性和紧凑的方式建立与该代码所需的最低量。 它也不例外,为初学者和PHP语言的专业开发人员的青睐。 正则表达式语言文字模板,简化处理文本的任务,并减少代码十位和百线。 许多问题不能得到解决根本离不开它。

在PHP中的正则表达式

PHP语言有三种机制的使用正则表达式 - «额日格»,«mb_ereg»和«预浸»。 最常见的是接口«预浸»,其职能提供访问PCRE正则表达式的支持,最初是为Perl语言,这是包含在PHP开发包的库。 预浸寻求在给定的文本字符串匹配函数,根据正则表达式的语言有一定的模式。

语法基础知识

作为短制品的一部分是不可能详细描述整个正则表达式语法,这是有特殊文献。 我们目前只有主要内容,以示对开发商的机遇和理解的代码示例。

在PHP正则表达式被正式定义非常困难的,因此简化说明。 正则表达式是一个文本字符串。 它由一个专门的隔离模板和指示来处理它的方式修改的。 可能列入图案的各种选择和循环。

例如,在表达/ \ D {3} - \ D {2} - \ D {2} / M分频器是“/”,然后选择模板,符号“M”是改性剂。

正则表达式的一切权力使用的元字符编码。 主要语言的元字符是反斜杠 - “\”。 它改变在相反以下的字符的类型(即,E.转换为普通字符通配符,并且反之亦然)。 另一个重要的元字符是直线«|»,指定替代模板。 的元字符更多的例子:

^ 起始对象或字符串
启动子模式
最终子模式
{ 开始量词
} 结束量词
\ D 十进制数0至9的
\ D 这是不是一个数字的任何字符
\ S 空符号,空格,制表符,
\ W 符号字典

PHP,处理的正则表达式,空间视为一个独立的有效字符,所以XYZ和ABC的WHERE是不同的表达。

子模式

在括号PHP正子模式,它们有时被称为“子表达式”。 执行以下功能:

  1. 分配方案。 例如模式(东西|鸟|)改为“热”,“火鸟”“热”相吻合 而如果没有括号也只会是一个空字符串,“鸟”和“热”。

  2. “壮观”的子模式。 这意味着,如果该模式匹配的子字符串,然后返回所有匹配。 为了清楚起见,我们举一个例子。 鉴于以下正则表达式: 冠军将得到((金|镀金)(奖章|杯)) -匹配字符串,“优胜者得到一枚金牌。” 除了最初的词组,搜索结果会发出:“金奖”,“ 奖牌”,“黄金”。

运营商重复(kvadrifikatory)

在编译正则表达式通常需要分析的数字和符号的重复。 这不是一个问题,如果没有大量的重复。 但要做到什么时候,我们不知道他们的确切数字? 在这种情况下,有必要使用特殊的元字符。

对于使用kvadrifikatory重复的描述 - 元字符来指定号码。 Kvadrifikatory有两种类型:

  • 常见的括号内;
  • 降低。

整体量词通过的允许重复元件的在括号两个数字,例如x {2,5-}形式的最小和最大数目触摸。 如果没有已知的最大重复次数,未指定的第二个参数:X {2}。

缩写量词是为了避免不必要的重载语法为最常见的重复码元。 通常有三种切口:

1. * - 零个或多个重复,其等同于{0,}。

2. + - 一个或多个重复的,即,{1} ...

3.? - 零或仅一个重复 - {0,1}。

例如正则表达式

对于那些谁学习正则表达式,例子 - 最好的教科书。 我们举几个,显示用最少的努力的机会。 所有的代码是用PHP 4.x及以上版本完全兼容。 要充分认识我们推荐这本书用j ..弗里德尔,“正则表达式”,这充分考虑语法的语言特性的语法和用法,并有正则表达式不仅PHP,而且对于一个Python,Perl中,MySQL和Java的,Ruby和C#的例子。

验证E-mail地址

任务。 有在其上请求的地址的电子邮件访问者的互联网页面。 发送消息之前,正则表达式必须检查的地址的正确性。 检查并不能保证指定的邮箱确实存在和接收消息。 但剔除可明显错误的地址。

决策。 与任何编程语言,PHP中的正则表达式电子邮件地址验证可以以不同的方式来实现,在这篇文章中的例子是不是最终和唯一的选择。 因此,在每种情况下,我们应提供需要编程和具体的实现完全取决于开发时要考虑到需求的列表。

因此,测试有效的电子邮件表达,应检查以下条件:

  1. 在起始存在排队@符号,并有没有间隙。
  2. @符号的地址域部分,仅包含域名的有效字符。 这同样适用于用户的姓名。
  3. 当检查用户名是必要确定的特殊字符存在下,例如一个撇号或垂直线。 这些符号具有潜在的危险,并可以包含在这样的种该SQL注入攻击。 避免地址。
  4. 用户名只允许有一个点,这可能不是字符串中的第一个或最后一个字符。
  5. 域名必须包含至少两个不超过6个字符。

例如,考虑到所有的这些条件可以在以下图中可以看出。

一个URL验证

任务。 检查指定的文本字符串是否是一个有效的 地址,URL。 再次,我们注意到,正则表达式URL检查可以通过多种方式来实现。

决策。 我们的最终版本如下:

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

现在使用绘制更详细地分析其成分。

权利要求1 之前的URL不应该有任何字符
要求2 检查强制前缀的存在«HTTP»
项目3 不应该有任何符号
4. 如果有«小号»,URL指向一个安全的连接«HTTPS»
5. 所需部分中的“//”
6. 无字
第7-9 验证所述 第一电平域 和点的存在
p.10-13 验证写第二级和点的域
p.14-17

文件结构URL - 一组数字,字母,下划线,破折号,点,并在最后一个斜杠

检查信用卡号码

任务。 您需要实现最常用的支付系统中输入信用卡号码的验证。 一个只为卡变种 维萨和万事达。

决策。 在创建表达式,你需要考虑在输入房间的差距可能存在。 地图上的数字被分成几个组更容易阅读和听写。 因此,它是自然的,一个人可以尝试以这种方式输入数字(即E.使用空格)。

写一个通用的表达,考虑到可能的空格或连字符,是复杂得多,简单地丢弃除了数字的所有字符。 因此,我们建议使用通配符表达/ D,这消除除了数字的所有字符。

现在,你可以直接到支票号码。 所有公司,信用卡发卡机构采用独特的数字格式。 在这个例子中使用它,并在客户端不需要输入公司的名称 - 它是由数决定。 Visa卡总是与数字4开始并具有13个或16位数字的长度。 万事达开始于51-55与长数16。结果的范围内,我们得到如下表达式:

处理订单之前,可以进一步进行测试的数量,这是在Luhn算法计算出的最后一位数字。

验证电话号码

任务。 检查输入的电话号码的正确性。

决策。 在固定和移动电话号码位数变化并还相当依赖于国家,所以普遍采用查,电话号码无法正确的正则表达式。 但是国际数字有检查模式是严格的格式和完善。 更是让越来越多的国内电话运营商正在努力满足相同的标准。 房间结构如下:

+ CCC.NNNNNNNNNNxEEEE,其中:

- C - 是一个由1-3数字的国家代码。

- N - 数高达14位数字。

- 电子 - 可选的扩展。

Plus是一个不可缺少的元素,而符号X是需要扩展仅当存在。

因此,我们有以下表现:

^ \ + [0-9] {1,3 } \ [0-9] {4,14}。(?:X +)?$

在该范围的数

任务。 有必要确保在一定范围的巧合整数。 此外,有必要找到一个正则表达式只能从范围内的号码。

决策。 这里有几个表情的一些最常见的情况:

确定小时从1至24 ^(1 [0-2] | [1-9])$
那天在1-31个月 ^(3 [01] | [12] [0-9] | [1-9])$
几秒钟或几分钟0-59 ^ [1-5] [0-9] $
从1到100之间的数字 *(100 |?[1-9] [0-9])$
今年1到366的日 ^(36 [0-6] | 3 [0-5] [0-9] | [12] [0-9] {2} |?[1-9] [0-9])$

搜寻IP位址

任务。 有必要确定给定的字符串是否是与000.000.000.000-255.255.255.255范围内有效的IP地址在IPv4格式。

决策。 正如在PHP语言的任何问题,正则表达式中有很多varintov。 例如,这样的:

表达式的在线检查

检查正则表达式正确初学者可由于语法的复杂性,从“正规”的编程语言不同是困难的。 为了解决这个问题,网上有很多测试表达式可以很容易地检查您在真实文本创建的模板的正确性。 程序员进入表达和验证数据,并立即显示处理的结果。 通常有呈现参考部分,其中详细的正则表达式,实施例和实现差异为最扩展语言。

但要完全信任的在线服务,不推荐谁使用PHP的所有开发成果。 正则表达式的编写和验证的人,提高资格,并保证没有错误的情况。

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 zhcn.unansea.com. Theme powered by WordPress.