1.数字相关的正则表达式
- 数字:^[0-9]*$
- n位定长的数字:^\d{n}$
- m-n位之间的数字:^\d{m,n}$
- 零和非零开头的数字:^(0|[1-9][0-9]*)$
- 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$
- 带1-2位小数的正数或负数:^(\-)?\d+(\.\d{1,2})?$
- 正数、负数、和小数:^(\-|\+)?\d+(\.\d+)?$
- 有两位小数的正实数:^[0-9]+(.[0-9]{2})?$
- 有1~3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$
- 正整数:^\d+$ 或 ^[1-9]\d*|0$
- 负整数:^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$
- 正浮点数:^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ 或 ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$
- 负浮点数:^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ 或 ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$
- 浮点数:^(-?\d+)(\.\d+)?$ 或 ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$
2.字符相关的正则表达式
- 汉字:^[\u4e00-\u9fa5]{0,}$
- 长度为3-20的所有字符:^.{3,20}$
- 由数字和26个英文字母组成的字符串:^[A-Za-z0-9]+$
- 由数字、26个英文字母或者下划线组成的字符串:^\w+$ 或 ^\w{3,20}$
- 中文、英文、数字包括下划线:^[\u4E00-\u9FA5A-Za-z0-9_]+$
- 中文、英文、数字但不包括下划线等符号:^[\u4E00-\u9FA5A-Za-z0-9]+$ 或 ^[\u4E00-\u9FA5A-Za-z0-9]{2,20}$
- 帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
- 密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线):^[a-zA-Z]\w{5,17}$
- 强密码(必须包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间):^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$
3.固定格式约定俗成的正则表达式
- Email地址:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
- 网站域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?
- URL网址:^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$
- 手机号码:^(13[0-9]|17[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$
- 电话号码(“XXX-XXXXXXX”、”XXXX-XXXXXXXX”、”XXX-XXXXXXX”、”XXX-XXXXXXXX”、”XXXXXXX”和”XXXXXXXX):^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$
- 国内电话号码(0511-4405222、021-87888822):\d{3}-\d{8}|\d{4}-\d{7}
- 身份证号(15位、18位数字):^\d{15}|\d{18}$
- 日期格式:^\d{4}-\d{1,2}-\d{1,2}
- 一年的12个月(01~09和1~12):^(0?[1-9]|1[0-2])$
- 一个月的31天(01~09和1~31):^((0?[1-9])|((1|2)[0-9])|30|31)$
- 腾讯QQ号:[1-9][0-9]{4,8} (腾讯QQ号从10000开始,目前最长为10位)
- 中国邮政编码:[1-9]\d{5}(?!\d) (中国邮政编码为6位数字)
- IP地址:\d+\.\d+\.\d+\.\d+ (提取IP地址时有用)
- IP地址:((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))
用法举例:
1.php中ip提交验证
// 去除前后空格
$ip = trim($ip);
// 使用正则表达式验证IP地址格式
$pattern = '/^(?:(?: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]?)$/';
if (!preg_match($pattern, $ip)) {
echo "请输入正确IP地址"; // 输出错误消息 // 弹窗提示用户输入正确IP地址
exit;
2.修改PHP代码中的preg_match
正则表达式,以便匹配以”V”开头、后跟4位数字和字母”A”或”T”的模式,你可以使用以下代码:
if (preg_match('/^V\d{4}[AT]/i', $userAgent)) {
$os = 'vivo手机';
}
这里的正则表达式解释如下:
^
表示字符串的开始。V
匹配字母”V”。\d{4}
匹配任意4位数字。\d
代表一个数字字符,{4}
指定恰好匹配4次。[AT]
匹配字母”A”或”T”。方括号内的字符集表示可以匹配其中的任意一个字符。i
是一个修饰符,表示匹配时不区分大小写。
因此,整个表达式会匹配以”V”开头,然后是任意4位数字,最后以”A”或”T”结尾的字符串。如果$userAgent
变量中包含这样的字符串,那么条件将为真,$os
变量将被赋值为’vivo手机’。
if (preg_match(‘/判断条件/i’, $userAgent)){ $os = ‘三星手机’; } 判断条件是 SM- 加一个大写字母 有的有 SAMSUNG
要匹配以”SM-“开头,后跟一个大写字母,并且可能包含”SAMSUNG”的字符串,你可以使用以下的正则表达式:
if (preg_match('/^SM-([A-Z])(.*SAMSUNG.*)?/i', $userAgent)) {
$os = '三星手机';
}
这里的正则表达式解释如下:
^
表示字符串的开始。SM-
匹配字符串”SM-“。([A-Z])
匹配一个大写字母,并将其捕获为一个组。(.*SAMSUNG.*)?
是一个可选的组,匹配任意字符(.
)出现零次或多次(*
),然后是”SAMSUNG”,再后面是任意字符出现零次或多次。问号(?
)表示这个组是可选的,即它可以出现零次或一次。i
是一个修饰符,表示匹配时不区分大小写。
这个正则表达式将匹配以”SM-“开头,后跟一个大写字母,并且可能包含”SAMSUNG”的字符串。如果$userAgent
变量中包含这样的字符串,那么条件将为真,$os
变量将被赋值为’三星手机’。
if (preg_match(‘/判断条件/i’, $userAgent)){ $os = ‘三星手机’; } 判断条件是 SM- 加一个大写字母 或者是含有 SAMSUNG
if (preg_match('/^(SM-[A-Z]|.*SAMSUNG.*)/i', $userAgent)) {
$os = '三星手机';
}