正则表达式大全
以下是整理的正则表达式基础语法和常见应用场景的详解,结合主流资料和实践案例,为您系统阐述正则表达式的精髓:
一、基础语法
1. 定位符:
`^` 表示匹配输入字符串的开始位置;
`$` 表示匹配输入字符串的结束位置;
`\b` 表示匹配单词边界,如 `er\b` 能精准匹配 "never" 中的 "er";
`\B` 则表示匹配非单词边界。
2. 量词:
`` 表示匹配前一个字符零次或多次,如 `runoob` 可匹配 "runob" 或 "runoob";
`+` 表示匹配前一个字符一次或多次,如 `runoo+b` 匹配 "runoob";
`?` 表示匹配前一个字符零次或一次,如 `colou?r` 可匹配 "color" 或 "colour";
`{n}` 精确匹配n次,`{n,}` 至少匹配n次,`{m,n}` 则匹配m到n次。
3. 字符集:
`[]` 匹配括号内的任意字符,如 `[aeiou]` 匹配元音字母;
`[^]` 匹配不在括号内的字符;
`.` 匹配除换行符外的任意字符。
二、常见正则表达式应用
1. 数字校验:
整数可用 `^[0-9]$` 或 `^\d+$` 表示;
正浮点数有 `^[1-9]\d\.\d|0\.\d[1-9]\d$`;
带1-2位小数的正负数则为 `^-?\d+\.\d{1,2}$`。
2. 文本校验:
汉字匹配可用 `^[\\u4e00-\\u9fa5]{0,}$`;
英文和数字混合为 `^[A-Za-z0-9]+$`;
密码强度(至少8位,含大小写和数字)可用 `^(?=\.\d)(?=.[a-z])(?=.[A-Z]).{8,}$` 表示。
3. 特定格式校验:
可用 `^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$`;
手机号(国内)为 `^1[3-9]\d{9}$`;
IP地址的匹配表达式为 `^((25[0-5]|2[0-4]\d|\d\d?)\.){3}(25[0-5]|2[0-4]\d|\d\d?)$`;
URL的匹配表达式为 `^(https?://)?([\w-]+.)+[\w-]+(/[\\w-./?%&=])?$`。
三、高级技巧
1. 分组与捕获:
`` 对表达式进行分组,如 `(\d{4})-(\d{2})` 可匹配日期并提取年、月;
`(?:)` 为非捕获分组,仅分组不捕获结果。
2. 预查与断言:
`(?=)` 表示正向肯定预查,如 `Windows(?=95|98)` 可匹配后面跟 "95" 或 "98" 的 "Windows";
`(?!)` 表示正向否定预查,用于设定条件限制。
四、工具与测试
在线测试工具如Regex101和RegExr可以方便进行正则表达式的测试。多种编程语言如JavaScript、Python和Java均内置正则引擎,方便在开发过程中使用。
提示:实际应用中,正则表达式需根据实际场景灵活调整,如验证国际化域名等复杂场景。