时间:2021-07-01 10:21:17 帮助过:3人阅读
$errName
=
""
;
$errAddress
=
""
;
$errEmail
=
""
;
$errPassport
=
""
;
$errPhone
=
""
;
$errZip
=
""
;
$errDate
=
""
;
$errUser
=
""
;
$errPass
=
""
;
在PHP中使用正则表达式的方法有两种。一个是真正的PHP风格,在这种情况下,我们必须使用ereg()函数,另一种是使用Perl风格的语法,我们验证。在这种情况下,我们必须使用preg_match()函数。在本教程中,我们将使用preg_match(),因为它是在大多数情况下,更快,同时还支持最常见的正则表达式语法。它还为我们提供了更多的功能,我们可以使用。 我们将开始与用户名的验证。我们将只允许字母,空格和破折号。因此,我们创建我们的regexp(正则表达式)。我们将尽一类为我们的可能值。类的创建时我们括在parences中的一些符号。这是我们的类: [A-ZA-Z的-我们的类包含所有字母AZ(全部小写字母),字母(大写字母),空间和破折号之间, 现在我们要设置这个类申请每一个字符,我们进入。因此,我们添加了一个(+),再加上签署后,我们的类定义。我们仍然缺少的东西。我们还没有定义我们的验证测试的范围。我们要设置文本的一部分,我们正在验证。如果我们不这样做,如果发现在我们进入,这是我们没有使用的字符,甚至一场比赛,将满足我们的正则表达式。我们如何做到这一点?我们把我们之间/
^ $ /开始和结束字符的字符串。“^”是指该行的开始和“$”是指它的结束。我们准备建立我们的regexp。 / ^ [A-ZA-Z的- ] + $ /斜线preg_match用来定义我们的正则表达式的开始和结束, 现在我们已完成,我们呢?有刚做的一件事。我们定义我们班的方式,允许用户输入名称begining破折号。这是我们要防止的东西。因此,我们必须添加一些我们的regexp,所以将不允许 排序,我们定义为一类新的用户名的首字母。它可以只包含大写字母。 现在我们结合我们所做的工作,到目前为止,得到最终结果。如果没有匹配的preg_match()返回0。在这种情况下,我们要设置我们的错误变量,这样我们就可以显示一些有意义的信息给用户 /
^ [AZ] [A-ZA-Z的- ] + $ /
// Full Name must contain letters, dashes and spaces only and must start with upper case letter.
if
(preg_match(
"/^[A-Z][a-zA-Z
-]+$/"
,
$_POST
[
"name"
]) === 0)
$errName
=
'Name must be from letters, dashes, spaces and must not start with dash
'
;
让我们前进到下valitaion领域,这将是该地址。这里不多做,因为它可以包含大量的符号。我们只需要定义一个类持有它们。 /
^ [A-ZA-Z0-9,_:“'] + $ / 翻译本的regexp:不要灰心丧气,从一开始到地址字符串结束检查如果我们的性格是以下AZ,包括AZ,0-9,空格,下划线,破折号,点,逗号,分号,双和事务所报价。您可以添加任何字符,你认为可能是一个地址的一部分。的东西这里要注意的是,当我们有引号的话,我们必须把他们面前的一个转义字符。
// Address must be word characters only
if
(preg_match(
"/^[a-zA-Z0-9
_-.,:"
']+$/
", $_POST["
address"]) === 0)
$errAddress
=
'Address must be only letters, numbers or one of the following _ - . , : " '
';
我们的下一个任务是创建一个正则表达式验证电子邮件。我们在这里要包括未来的另一表达,这是预定义类的CONSTANS,represend。这里的人的名单,我们将使用: W
= [0-9A-ZA-Z_]类,包括数字,字母和下划线。 D = [0-9]类只包括数字 这些常量节省大量的输入和使源代码更容易阅读和理解。什么是电子邮件的面具?第一部分的用户名可以包含字母,数字,点和下划线字符。它以字母开始,如果我们有点,它必须由字母后跟。然后,它必须遵循的@符号和再次的第一部分。在最后,我们必须有2至4个字母的一个点。每当我们有在regexp的特殊含义的字符,我们要使用它作为字符,我们必须以反斜杠转义。
// Email mask
if
(preg_match(
"/^[a-zA-Z]w+(.w+)*@w+(.[0-9a-zA-Z]+)*.[a-zA-Z]{2,4}$/"
,
$_POST
[
"email"
])
=== 0)
$errEmail
=
'Email must comply with this mask: chars(.chars)@chars(.chars).chars(2-4)
'
;
验证字符串是护照。它只能包含数字,是10位或12位数字。但是,我们如何设置我们要多少个字符。我们把所需数量的characteras
parences {}和正则表达式看起来像这样/ ^ D {10} $ / / ^ D {12} /美元。我们如何结合这两个词语,让我们使用一个或其他。我们使用。它的标志是“|”。我们的声明是完整/
^ D {10} $ | ^ D {12} $ /。
// Passport must be only digits
if
(preg_match(
"/^d{10}$|^d{12}$/"
,
$_POST
[
"passport"
])
=== 0)
$errPassport
=
'Passport must be 10 or 12 digits
'
;
我将提出一个电话面具。它可以是一个很大的不同,但它是笑着的,不够可以很容易地定制。你只定义在每一个电话号码的一部分的diggits数量和选择分隔符。它可以是任何你想要的符号。邮编也是很容易实现。
// Phone mask 1-800-999-9999
if
(preg_match(
"/^d{1}-d{3}-d{3}-d{4}$/"
,
$_POST
[
"phone"
])
=== 0)
$errPhone
=
'Phone must comply with this mask: 1-333-333-4444
'
;
// Zip must be 4 digits
if
(preg_match(
"/^d{4}$/"
,
$_POST
[
"zip"
])
=== 0)
$errZip
=
'Zip must be 4 digits
'
;
现在,我们会日期掩码。它看起来像这样:YYYY-MM-DD的。我们的日期将被只能由diggits。现在你已经如何设置一年的长度,但月份和日期可以是1和2之间的长度diggits。我们设置两个值由逗号分隔{1,2}。这意味着,在此区间的所有数字都是有效的价值。
// Date mask YYYY-MM-DD
if
(preg_match(
"/^[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}$/"
,
$_POST
[
"date"
])
=== 0)
$errDate
=
'Date must comply with this mask: YYYY-MM-DD
'
;
过去的事情,在我们的注册检查 - 验证的形式是我们的用户的用户名和密码。用户名可以是任何字符串,包括字母,diggits和uderscore字符(“W”预定义类)。我们想要的用户名至少5个字符长。这是由这个声明{5}
accomplised。逗号后的遗漏值意味着它可以是任何值相等或更大,5。
// User must be digits and letters
if
(preg_match(
"/^[0-9a-zA-Z_]{5,}$/"
,
$_POST
[
"user"
])
=== 0)
$errUser
=
'User must be bigger that 5 chars and contain only digits, letters and underscore
'
;
一个好的密码是最难的事来检查。要通过验证测试,它必须包含至少一个小写字母,大写字母和一个数字。这将使它难以打破。一个是要知道在我们开始之前
- 点代表任意字符。我们的目的,我们必须做出一些团体代表密码。它们被定义使用的parences的()。每个组将检查的特定条件。第一个将检查我们的字符串的长度。它必须等于或大于8大。?=被称为正定性超前。一个正lookahead说:“下一个文本必须是这样的,并遵循这些规则。” 所以,当我们采取“一个文本”必须“的类型。{8}”。我们宣布我们的第一个正则表达式条件(?=
{8})。它指出,我们的字符串必须是同等或更大,8,可以包含任何字符。第二条规则,我们要申请密码至少包含一个diggit。我们再次把我们的字符串和检查对我们的条件(=
* [0-9])。同样,我们做的其他条件。一个是小写字母,大写字母和其他(= * [AZ])(= *排序)。这是我们的密码的最低要求。用户可能需要更强大的密码。所以我们加上“*”begining和密码。这意味着,任何可以插入从0到多。
// Password must be strong
if
(preg_match(
"/^.*(?=.{8,})(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z]).*$/"
,
$_POST
[
"pass"
])
=== 0)
$errPass
=
'Password must be at least 8 characters and must contain at least one lower case letter, one upper case letter and one digit
'
;
就这样结束了我们的教程。你看到一个强大的工具定期experessions和它们如何能够帮助我们的形式输入验证。他们的方式较复杂,你在这里看到,但知道至少基础是必不可少的。因此,那些沉重的书籍,并开始阅读。我希望这些例子可以帮助你的工作。
站长行业门户(www.software8.co)文章,希望大家可以留言建议