### 常用的正则表达式(regularExpression)
正则表达式是一种强大的文本处理工具,在数据验证、字符串提取等方面有着广泛的应用。本文将详细解释给出的正则表达式及其应用场景。
#### 1. Email: \b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b
此正则表达式用于匹配电子邮件地址。具体解释如下:
- `\b` 表示单词边界,确保整个词组是独立的。
- `[A-Z0-9._%-]+` 匹配一个或多个大写字母、数字、点号、下划线、百分号或减号。
- `@` 匹配“@”符号。
- `[A-Z0-9.-]+` 匹配一个或多个大写字母、数字、点号或减号。
- `\.` 匹配点号。
- `[A-Z]{2,4}` 匹配两个到四个大写字母,通常表示顶级域名如.com、.net等。
- `\b` 表示单词边界。
**应用场景:**
- 在表单验证中检查用户输入的邮箱格式是否正确。
- 数据清洗时过滤不符合规范的电子邮件地址。
#### 2. 匹配中文字符的正则表达式: [\u4e00-\u9fa5]
这个正则表达式用于匹配中文字符,其中`\u4e00-\u9fa5`代表了Unicode编码中所有常用汉字的范围。
**应用场景:**
- 验证用户输入的名字是否含有中文字符。
- 对文档进行语言分析,提取出所有的中文内容。
#### 3. 匹配双字节字符(包括汉字在内):[^\x00-\xff]
该表达式用于匹配双字节字符,即非ASCII字符。`\x00-\xff`代表了ASCII码的范围,取反则匹配所有非ASCII字符。
**应用场景:**
- 检查字符串中是否包含非英文字符,比如中文、日文等。
- 文本处理时剔除非英文字符,保留纯英文内容。
#### 4. 匹配空白行的正则表达式:\n\s*\r
此正则表达式用于匹配空白行。具体来说:
- `\n` 表示换行符。
- `\s*` 表示任意数量的空白字符。
- `\r` 表示回车符。
**应用场景:**
- 清洗文本数据时去除不必要的空白行。
- 处理多行文本数据,查找并删除空白行。
#### 其他常见正则表达式
除了以上介绍的正则表达式之外,还有其他几种常用的匹配规则:
- **HTML标签**:`<(\S*?)[^>]*>.*?</\1>|<.*?/>`
- `<(\S*?)[^>]*>` 匹配开始标签,`\1`表示引用前面匹配的内容。
- `.*?</\1>` 匹配中间内容及结束标签。
- `<.*?/>` 匹配自闭合标签。
- **应用场景:** 提取HTML文档中的标签或内容,用于解析HTML文档。
- **匹配首尾空白**:`^\s*|\s*$`
- `^\s*` 匹配开头的空白字符。
- `\s*$` 匹配结尾的空白字符。
- **应用场景:** 清除字符串两端的空白字符。
- **匹配网址(URL)**:`[a-zA-z]+://[^\s]*`
- `[a-zA-z]+://` 匹配协议头,如http://、https://等。
- `[^\s]*` 匹配后面的内容直至遇到空格或其他非字符。
- **应用场景:** 验证用户输入的网址格式是否正确。
- **匹配电话号码**:`\d{3}-\d{8}|\d{4}-\d{7}`
- `\d{3}-\d{8}` 匹配形如010-12345678的电话号码。
- `\d{4}-\d{7}` 匹配形如010-1234567的电话号码。
- **应用场景:** 验证用户输入的电话号码格式是否正确。
- **匹配邮政编码**:`[1-9]\d{5}(?!\d)`
- `[1-9]` 匹配首位非零数字。
- `\d{5}` 匹配五位数字。
- `(?!\d)` 负向前瞻,确保数字后不跟其他数字。
- **应用场景:** 验证用户输入的邮政编码格式是否正确。
- **匹配身份证号**:`\d{15}|\d{18}`
- `\d{15}` 匹配15位的身份证号。
- `\d{18}` 匹配18位的身份证号。
- **应用场景:** 验证用户输入的身份证号码格式是否正确。
- **匹配IP地址**:`\d+\.\d+\.\d+\.\d+`
- `\d+` 匹配一个或多个数字。
- `\.` 匹配点号。
- **应用场景:** 验证用户输入的IP地址格式是否正确。
- **匹配整数**:
- `^[1-9]\d*$` 匹配正整数。
- `^-?[1-9]\d*$` 匹配带符号的整数。
- `^[1-9]\d*|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$` 匹配非负浮点数。
- `^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$` 匹配非正浮点数。
- **应用场景:** 验证用户输入的数值是否为浮点数。
- **匹配字母串**:
- `^[A-Za-z]+$` 匹配由26个英文字母组成的字符串。
- `^[A-Z]+$` 匹配由26个大写英文字母组成的字符串。
- `^[a-z]+$` 匹配由26个小写英文字母组成的字符串。
- `^[A-Za-z0-9]+$` 匹配由26个英文字母和数字组成的字符串。
- `^\w+$` 匹配由26个英文字母、数字或下划线组成的字符串。
- **应用场景:** 验证用户输入的字符串是否符合指定的字母或字母数字组合模式。