标题: PHP网页设计PHP中的正轨表达式 [打印本页] 作者: 不帅 时间: 2015-2-3 23:54 标题: PHP网页设计PHP中的正轨表达式 我的这套线路可能跟许多学习PHP的爱好者不谋而合,这也算是一个循序渐进的学习过程,不过新手不要看到上面的概括就以为学习蛮简单的,默默在此不得不对您稍微泼一下冷水,任何东西其实都不简单。 Hunte
PHP承继*NIX的一向传统,完整撑持正轨表达式的处置。正轨表达式供应了一种初级的,但不直不雅的字符串婚配和处置的办法。用过PERL的正轨表达式的伴侣都晓得,正轨表达式的功效十分壮大,但学起来不是那末轻易。
好比:
^.+@.+\\..+$
这段无效却难以了解的代码足够使一些法式员头痛(我就是)或让他们保持利用正轨表达式。信任当你读完这个教程后,就能够了解这段代码的寄义了。
根基形式婚配
一切从最根基的入手下手。形式,是正轨表达式最根基的元素,它们是一组描写字符串特点的字符。形式可以很复杂,由通俗的字符串构成,也能够十分庞杂,常常用特别的字符暗示一个局限内的字符、反复呈现,或暗示高低文。例如:
^once
这个形式包括一个特别的字符^,暗示该形式只婚配那些以once开首的字符串。例如该形式与字符串"once upon a time"婚配,与"There once was a man from NewYork"不婚配。正如如^符号暗示开首一样,$符号用来婚配那些以给定形式开头的字符串。
bucket$
这个形式与"Who kept all of this cash in a bucket"婚配,与"buckets"不婚配。字符^和$同时利用时,暗示准确婚配(字符串与形式一样)。例如:
^bucket$
只婚配字符串"bucket"。假如一个形式不包含^和$,那末它与任何包括该形式的字符串婚配。例如:形式
once
与字符串
There once was a man from NewYork
Who kept all of his cash in a bucket.
是婚配的。
在该形式中的字母(o-n-c-e)是字面的字符,也就是说,他们暗示该字母自己,数字也是一样的。其他一些略微庞杂的字符,如标点符号和白字符(空格、制表符等),要用到本义序列。一切的本义序列都用反斜杠(\)打头。制表符的本义序列是:\t。所以假如咱们要检测一个字符串是不是以制表符开首,可以用这个形式:
^\t
相似的,用\n暗示“新行”,\r暗示回车。其他的特别符号,可以用在后面加上反斜杠,如反斜杠自己用\\暗示,句号.用\.暗示,以此类推。
字符簇
在INTERNET的法式中,正轨表达式凡是用来验证用户的输出。当用户提交一个FORM今后,要判别输出的德律风号码、地址、EMAIL地址、信誉卡号码等是不是无效,用通俗的基于字面的字符是不敷的。
所以要用一种更自在的描写咱们要的形式的举措,它就是字符簇。要创立一个暗示一切元音字符的字符簇,就把一切的元音字符放在一个方括号里:
[AaEeIiOoUu]
这个形式与任何元音字符婚配,但只能暗示一个字符。用连字号可以暗示一个字符的局限,如:
[a-z] //婚配一切的小写字母
[A-Z] //婚配一切的大写字母
[a-zA-Z] //婚配一切的字母
[0-9] //婚配一切的数字
[0-9\.\-] //婚配一切的数字,句号和减号
[ \f\r\t\n] //婚配一切的白字符
一样的,这些也只暗示一个字符,这是一个十分主要的。假如要婚配一个由一个小写字母和一名数字构成的字符串,好比"z2"、"t6"或"g7",但不是"ab2"、"r2d3" 或"b52"的话,用这个形式:
^[a-z][0-9]$
虽然[a-z]代表26个字母的局限,但在这里它只能与第一个字符是小写字母的字符串婚配。
后面已经提到^暗示字符串的开首,但它还有别的一个寄义。当在一组方括号里利用^是,它暗示“非”或“扫除”的意思,经常用来剔除某个字符。还用后面的例子,咱们请求第一个字符不克不及是数字:
^[^0-9][0-9]$
这个形式与"&5"、"g7"及"-2"是婚配的,但与"12"、"66"是不婚配的。上面是几个扫除特定字符的例子:
[^a-z] //除小写字母之外的一切字符
[^\\\/\^] //除(\)(/)(^)以外的一切字符
[^\"\'] //除双引号(")和单引号(')以外的一切字符