### PHP常用正则表达式详解 #### 正则表达式概览 正则表达式是一种强大的文本处理工具,被广泛应用于各种编程语言中,用于字符串的查找、替换、分割等操作。在PHP中,正则表达式的应用非常普遍,本文将详细介绍给定文件中的PHP常用正则表达式及其应用场景。 #### 数字相关的正则表达式 1. **匹配非负整数:** `^\d+$` - **含义:** 从字符串开头到结尾全部由数字组成。 - **应用场景:** 验证用户输入是否为纯数字(如年龄)。 2. **匹配非零的正整数:** `^[0-9]*[1-9][0-9]*$` - **含义:** 匹配以非零数字开头的正整数。 - **应用场景:** 验证手机号码、学号等不允许前导零的情况。 3. **匹配非正数(包括0和负数):** `^((-\d+)|(0+))$` - **含义:** 匹配所有非正数,包括负数和0。 - **应用场景:** 在财务系统中验证金额输入是否为非正数。 4. **匹配非正整数(包括负整数和0):** `^-?[0-9]*[1-9][0-9]*$` - **含义:** 匹配所有非正整数,包括负整数和0。 - **应用场景:** 验证温度值,允许输入负数。 5. **匹配浮点数:** `^\d+(\.\d+)?$` - **含义:** 匹配整数或带有小数部分的浮点数。 - **应用场景:** 验证价格、坐标等需要精确到小数点后几位的数据。 6. **匹配标准的浮点数:** `^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$` - **含义:** 更加严格的浮点数匹配,确保小数部分不是全0。 - **应用场景:** 在科学计算中确保数据的准确性。 7. **匹配非正的浮点数:** `^((-\d+(\.\d+)?)|(0+(\.0+)?))$` - **含义:** 匹配所有非正浮点数,包括负数和0。 - **应用场景:** 验证温度值或其他可能为负数的场景。 8. **匹配非正的浮点数(另一种写法):** `^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$` - **含义:** 匹配所有非正浮点数,包括负数和0,与上一个正则类似但写法不同。 - **应用场景:** 同上。 9. **匹配带符号的浮点数:** `^(-?\d+)(\.\d+)?$` - **含义:** 匹配带符号的浮点数,支持正数和负数。 - **应用场景:** 验证带有正负号的数值。 #### 字符串相关的正则表达式 1. **匹配字母:** `^[A-Za-z]+$` - **含义:** 匹配由英文字母组成的字符串。 - **应用场景:** 验证用户名只包含英文字符。 2. **匹配大写字母:** `^[A-Z]+$` - **含义:** 匹配由大写字母组成的字符串。 - **应用场景:** 验证输入是否为全大写的英文单词。 3. **匹配小写字母:** `^[a-z]+$` - **含义:** 匹配由小写字母组成的字符串。 - **应用场景:** 验证输入是否为全小写的英文单词。 4. **匹配字母和数字:** `^[A-Za-z0-9]+$` - **含义:** 匹配由字母和数字组成的字符串。 - **应用场景:** 验证密码是否符合规则。 5. **匹配字母数字下划线:** `^\w+$` - **含义:** 匹配由字母、数字和下划线组成的字符串。 - **应用场景:** 验证变量名、用户名等是否合法。 6. **匹配电子邮件地址:** `^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$` - **含义:** 匹配常见的电子邮件地址格式。 - **应用场景:** 验证用户注册时输入的邮箱地址。 7. **匹配网址:** `^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$` - **含义:** 匹配常见的网址格式。 - **应用场景:** 验证用户输入的网址是否有效。 8. **匹配日期:** `/^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$/` 或 `/^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$/` - **含义:** 分别匹配年月日和月日年的日期格式。 - **应用场景:** 验证用户输入的日期格式是否正确。 9. **匹配IP地址:** `^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5])$` - **含义:** 匹配标准的IPv4地址格式。 - **应用场景:** 验证网络设备的IP地址配置。 10. **匹配电话号码:** `/^((\+?[0-9]{2,4}\-[0-9]{3,4}\-)|([0-9]{3,4}\-))?([0-9]{7,8})(\-[0-9]+)?$/` - **含义:** 匹配常见的电话号码格式。 - **应用场景:** 验证用户填写的联系电话是否有效。 11. **匹配QQ号:** `^[1-9]*[1-9][0-9]*$` - **含义:** 匹配QQ号,即匹配以非0数字开头的正整数。 - **应用场景:** 验证用户输入的QQ号码是否有效。 #### 正则表达式特殊符号解释 - **转义字符:** `\` - **作用:** 对特殊字符进行转义。 - **示例:** `\.` 表示匹配`.`字符本身而不是`.`作为特殊字符的功能。 - **位置锚点:** `^`, `$` - **作用:** 分别表示字符串的开始和结束。 - **示例:** `^abc` 表示字符串必须以`abc`开头。 - **重复限定符:** `{n}`, `{n,}`, `{n,m}` - **作用:** 指定前面的字符或组重复出现的次数。 - **示例:** `a{2}` 表示`a`字符至少重复2次。 - **量词:** `*`, `+`, `?` - **作用:** 控制重复次数。 - **示例:** `a*` 表示`a`字符可以出现0次或多次。 - **预查和否定预查:** `(?=pattern)`, `(?!pattern)` - **作用:** 分别表示如果后面跟着`pattern`则匹配,如果不跟着`pattern`则匹配。 - **示例:** `a(?=b)` 表示匹配`a`后面跟着`b`的情况。 - **字符类:** `[ ]`, `[^ ]` - **作用:** 指定一组字符中的任意一个字符,或者不属于指定组的任意一个字符。 - **示例:** `[abc]` 表示匹配`a`、`b`或`c`中的任意一个。 通过以上对PHP常用正则表达式的详细介绍,我们可以看到正则表达式在实际开发中的重要性和灵活性。熟练掌握这些正则表达式将有助于开发者更高效地完成文本处理任务。
"^[0-9]*[1-9][0-9]*$" //正整数
"^((-\d+)|(0+))$" //非正整数(负整数 + 0)
"^-[0-9]*[1-9][0-9]*$" //负整数
"^-?\d+$" //整数
"^\d+(\.\d+)?$" //非负浮点数(正浮点数 + 0)
"^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$" //正浮点数
"^((-\d+(\.\d+)?)|(0+(\.0+)?))$" //非正浮点数(负浮点数 + 0)
"^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$" //负浮点数
"^(-?\d+)(\.\d+)?$" //浮点数
"^[A-Za-z]+$" //由26个英文字母组成的字符串
"^[A-Z]+$" //由26个英文字母的大写组成的字符串
"^[a-z]+$" //由26个英文字母的小写组成的字符串
"^[A-Za-z0-9]+$" //由数字和26个英文字母组成的字符串
"^\w+$" //由数字、26个英文字母或者下划线组成的字符串
"^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$" //email地址
"^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$" //url
/^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$/ // 年-月-日
/^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$/ // 月/日/年
"^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$" //Emil
/^((\+?[0-9]{2,4}\-[0-9]{3,4}\-)|([0-9]{3,4}\-))?([0-9]{7,8})(\-[0-9]+)?$/ //电话号码
"^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5])$" //IP地址
匹配中文字符的正则表达式: [\u4e00-\u9fa5]
匹配双字节字符(包括汉字在内):[^\x00-\xff]
匹配空行的正则表达式:\n[\s| ]*\r
匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*) \/>/
匹配首尾空格的正则表达式:(^\s*)|(\s*$)
匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
匹配网址URL的正则表达式:^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$
匹配国内电话号码:(\d{3}-|\d{4}-)?(\d{8}|\d{7})?
匹配腾讯QQ号:^[1-9]*[1-9][0-9]*$
元字符及其在正则表达式上下文中的行为:
\ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个后向引用、或一个八进制转义符。
^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的Multiline 属性,^ 也匹配 ’\n’ 或 ’\r’ 之后的位置。
$ 匹配输入字符串的结束位置。如果设置了 RegExp 对象的Multiline 属性,$ 也匹配 ’\n’ 或 ’\r’ 之前的位置。
* 匹配前面的子表达式零次或多次。
+ 匹配前面的子表达式一次或多次。+ 等价于 {1,}。
? 匹配前面的子表达式零次或一次。? 等价于 {0,1}。
{n} n 是一个非负整数,匹配确定的n 次。
{n,} n 是一个非负整数,至少匹配n 次。
{n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。在逗号和两个数之间不能有空格。
? 当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。
. 匹配除 "\n" 之外的任何单个字符。要匹配包括 ’\n’ 在内的任何字符,请使用象 ’[.\n]’ 的模式。
(pattern) 匹配pattern 并获取这一匹配。
剩余7页未读,继续阅读
- 粉丝: 0
- 资源: 14
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助