当前位置:首页 » 编程语言 » php正则验证用户名

php正则验证用户名

发布时间: 2024-01-19 20:19:42

Ⅰ thinkphp验证器正则常用规则

ThinkPHP的自动验证常用的正则

一般我们见的比较多的是设置规则为require、email之类的,其实这些本身也是属于正则表达式验证方式,只是系统内置定义了一些常用的正则表达式而已。这些内置的正则表达式的定义可以参考model类的regex方法,内置支持的正则定义包括:
require 字段必须、email 邮箱、url URL地址、currency 货币、number 数字、zip 邮编、integer 整数、double 浮点数、english 英文字母,但是并不局限于这些正则规则的,我们完全可以直接在验证规则里面使用正则表达式进行定义,这样我们可以凭借强大的正则表达式来进行表单字段验 证,例如:

附上一些表单验证中比较常用的正则表达式写法:

匹配特定字符串:

限定符
限定符用来指定正则表达式的一个给定组件必须要出现多少次才能满足匹配。有 * 或 + 或 ? 或 {n} 或 {n,} 或 {n,m} 共6种。

正则表达式的限定符有:

ThinkPHP的自动验证机制是为了进行表单数据验证,验证可以支持function、 callback、confirm、equal、unique和regex,这里要讲的是使用正则表达式进行验证。

特殊字符

许多元字符要求在试图匹配它们时特别对待。若要匹配这些特殊字符,必须首先使字符"转义",即,将反斜杠字符 放在它们前面。下表列出了正则表达式中的特殊字符:

正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。

例如:

构造正则表达式的方法和创建数学表达式的方法一样。也就是用多种元字符与运算符可以将小的表达式结合在一起来创建更大的表达式。正则表达式的组件可以是单个的字符、字符集合、字符范围、字符间的选择或者所有这些组件的任意组合。

正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为"元字符")组成的文字模式。模式描述在搜索文本时要匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。

普通字符包括没有显式指定为元字符的所有可打印和不可打印字符。这包括所有大写和小写字母、所有数字、所有标点符号和一些其他符号。

非打印字符也可以是正则表达式的组成部分。下表列出了表示非打印字符的转义序列:

所谓特殊字符,就是一些有特殊含义的字符,如上面说的 runoo*b 中的 ,简单的说就是表示任何字符串的意思。如果要查找字符串中的 * 符号,则需要对 * 进行转义,即在其前加一个 : runo*ob 匹配 runo ob。

许多元字符要求在试图匹配它们时特别对待。若要匹配这些特殊字符,必须首先使字符"转义",即,将反斜杠字符 放在它们前面。下表列出了正则表达式中的特殊字符:

限定符用来指定正则表达式的一个给定组件必须要出现多少次才能满足匹配。有 * 或 + 或 ? 或 {n} 或 {n,} 或 {n,m} 共6种。

正则表达式的限定符有:

由于章节编号在大的输入文档中会很可能超过九,所以您需要一种方式来处理两位或三位章节编号。限定符给您这种能力。下面的正则表达式匹配编号为任何位数的章节标题:

请注意,限定符出现在范围表达式之后。因此,它应用于整个范围表达式,在本例中,只指定从 0 到 9 的数字(包括 0 和 9)。

这里不使用 + 限定符,因为在第二个位置或后面的位置不一定需要有一个数字。也不使用 ? 字符,因为使用 ? 会将章节编号限制到只有两位数。您需要至少匹配 Chapter 和空格字符后面的一个数字。

如果您知道章节编号被限制为只有 99 章,可以使用下面的表达式来至少指定一位但至多两位数字。

上面的表达式的缺点是,大于 99 的章节编号仍只匹配开头两位数字。另一个缺点是 Chapter 0 也将匹配。只匹配两位数字的更好的表达式如下:

* 、+限定符都是贪婪的,因为它们会尽可能多的匹配文字,只有在它们的后面加上一个?就可以实现非贪婪或最小匹配。

例如,您可能搜索 HTML 文档,以查找括在 H1 标记内的章节标题。该文本在您的文档中如下:

<H1>Chapter 1 - 介绍正则表达式</H1>

贪婪: 下面的表达式匹配从开始小于符号 (<) 到关闭 H1 标记的大于符号 (>) 之间的所有内容。

非贪婪: 如果您只需要匹配开始和结束 H1 标签,下面的非贪婪表达式只匹配 <H1>。

如果只想匹配开始的 H1 标签,表达式则是:

通过在 *、+ 或 ? 限定符之后放置 ?,该表达式从"贪心"表达式转换为"非贪心"表达式或者最小匹配。

定位符使您能够将正则表达式固定到行首或行尾。它们还使您能够创建这样的正则表达式,这些正则表达式出现在一个单词内、在一个单词的开头或者一个单词的结尾。

正则表达式的定位符有:

Ⅱ php 判断 用户名 英文或者数字

用正则来判断,如检查是否数字的代码: 1 2 if(preg_match("/^\d*$/",$fgid)) echo('是数字'); else echo('不是数字'); 验证由26个英文字母组成的字符串:^[A-Za-z]+$ 验证由26个大写英文字母组成的字符串:^[A-Z]+$ 验证由数字和26个英文字母组成的字符串:^[A-Za-z0-9]+$

Ⅲ 超常用的PHP正则表达式收集整理

以下就是对超常用的PHP正则表达式进行的收集整理,为了方便大家更快更好的掌握php正则表达式。
一、表单验证匹配
验证账号,字母开头,允许
5-16
字节,允许字母数字下划线:^[a-zA-Z][a-zA-Z0-9_]{4,15}$
验证账号,不能为空,不能有空格,只能是英文字母:^\S+[a-z
A-Z]$
验证账号,不能有空格,不能非数字:^\d+$
验证用户密码,以字母开头,长度在
6-18
之间:^[a-zA-Z]\w{5,17}$
验证是否含有
^%&',;=?$\
等字符:[^%&',;=?$\x22]+
匹配Email地址:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
匹配腾讯QQ号:[1-9][0-9]{4,}
匹配日期,只能是
2004-10-22
格式:^\d{4}\-\d{1,2}-\d{1,2}$
匹配国内电话号码:^\d{3}-\d{8}|\d{4}-\d{7,8}$------------评注:匹配形式如010-12345678
或0571-12345678

0831-1234567
匹配中国邮政编码:^[1-9]\d{5}(?!\d)$
匹配身份证:\d{14}(\d{4}|(\d{3}[xX])|\d{1})------------评注:中国的身份证为15
位或18

不能为空且二十字节以上:^[\s|\S]{20,}$
二、字符匹配
匹配由
26
个英文字母组成的字符串:^[A-Za-z]+$
匹配由
26
个大写英文字母组成的字符串:^[A-Z]+$
匹配由
26
个小写英文字母组成的字符串:^[a-z]+$
匹配由数字和
26
个英文字母组成的字符串:^[A-Za-z0-9]+$
匹配由数字、26个英文字母或者下划线组成的字符串:^\w+$
匹配空行:\n[\s|
]*\r
匹配任何内容:[\s\S]*
匹配中文字符:[\x80-\xff]+
或者
[\xa1-\xff]+
只能输入汉字:^[\x80-\xff],{0,}$
匹配双字节字符(包括汉字在内):[^\x00-\xff]
三、匹配数字
只能输入数字:^[0-9]*$
只能输入n位的数字:^\d{n}$
只能输入至少n位数字:^\d{n,}$
只能输入m-n位的数字:^\d{m,n}$
匹配正整数:^[1-9]\d*$
匹配负整数:^-[1-9]\d*$
匹配整数:^-?[1-9]\d*$
匹配非负整数(正整数
+
0):^[1-9]\d*|0$
匹配非正整数(负整数
+
0):^-[1-9]\d*|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)$
匹配非负浮点数(正浮点数
+
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$
四、其他
匹配HTML标记的正则表达式(无法匹配嵌套标签):<(\S*?)[^>]*>.*?</\1>|<.*?
/>
匹配网址
URL
:[a-zA-z]+://[^\s]*
匹配
IP
地址:((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)
匹配完整域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.?
提示
上述正则表达式通常都加了
^

$
来限定字符的起始和结束,如果需要匹配的内容包括在字符串当中,可能需要考虑去掉
^

$
限定符。
以上正则表达式仅供参考,使用时请检验后再使用,希望通过这些超常用的PHP正则表达式

Ⅳ PHP用正则表达式做注册页面

// 定义正则表达式
$username_pattern = "/^[a-zA-Z0-9_-]{3,16}$/"; // 用户名必须是 3-16 位英文字母、数字、下划线或短横线
$password_pattern = "/^[a-zA-Z0-9_-]{6,18}$/"; // 密码必须是派竖型 6-18 位英文字母、数字、下划线或短横线
$email_pattern = "/^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$/"; // 邮箱必须符合常规格式
// 获取表单数据
$username = $_POST['username'];
$password = $_POST['password'];
$email = $_POST['email'];
// 验证用户名
if (!preg_match($username_pattern, $username)) {
echo "用户名不合法";
exit;
}
// 验证密码尘猜
if (!preg_match($password_pattern, $password)) {
echo "密码不合法";
exit;
}
// 验证邮箱
if (!preg_match($email_pattern, $email)) {
echo "邮箱不合法";
exit;
}
// 如果所有表单数据都合法,就将数据纤老插入数据库或执行其他操作
上述代码中,使用了 PHP 的 preg_match 函数来进行正则表达式匹配。如果正则表达式匹配成功,函数返回 1,否则返回 0。通过判断返回值来确定表单数据是否合法。
当然,这只是一个示例,具体的正则表达式和表单验证逻辑需要根据实际情况进行调整。

Ⅳ php正则表达式验证用户名

//中文和英文结合而且6-20字符
$preg='/^[a-zA-Z\x{4e00}-\x{9fa5}]{6,20}$/u';
//英文、数字、下划线6-20位字符
$preg='/^[\w\_]{6,20}$/u';

过滤非法字符防止SQL注入漏洞,只能另说,对不同的接口和参数有针对性的过滤,没有通用的正则。

热点内容
奇骏哪个配置性价比 发布:2024-11-29 22:25:21 浏览:702
汉娜数据库 发布:2024-11-29 22:25:17 浏览:703
服务器和收银机怎么连接 发布:2024-11-29 22:24:11 浏览:608
关键词排名源码 发布:2024-11-29 22:22:03 浏览:72
禅道服务器ip是什么 发布:2024-11-29 22:22:02 浏览:808
参贪心算法 发布:2024-11-29 21:54:24 浏览:340
php统计数组元素 发布:2024-11-29 21:46:08 浏览:195
健康和解压哪个重要 发布:2024-11-29 21:40:07 浏览:749
联通网的密码去哪里找 发布:2024-11-29 21:38:57 浏览:849
jscookie加密 发布:2024-11-29 21:33:03 浏览:40