侧边栏壁纸
博主头像
DreamXd 博主等级

行动起来,活在当下

  • 累计撰写 2 篇文章
  • 累计创建 3 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

正则表达式的使用

Administrator
2025-07-21 / 0 评论 / 0 点赞 / 4 阅读 / 0 字

基本概念

正则表达式是一组由字母和符号组成的特殊文本,它可以用来从文本中找出满足你想要的格式的句子。一个正则表达式是一种从左到右匹配主体字符串的模式,常使用缩写的术语“regex”或“regexp”。

常用元字符

元字符 描述
. 匹配任意单个字符(除了换行符)
^ 匹配字符串的开始位置
$ 匹配字符串的结束位置
* 匹配前面的子表达式零次或多次
+ 匹配前面的子表达式一次或多次
? 匹配前面的子表达式零次或一次
\d 匹配一个数字字符,等价于[0-9]
\w 匹配字母、数字或下划线,等价于[A-Za-z0-9_]
\s 匹配任何空白字符(空格、制表符、换行符等)
[ ] 字符集合,匹配所包含的任意一个字符
[^ ] 负值字符集合,匹配未包含的任意字符
{n} 匹配前面的子表达式恰好n次
{n,} 匹配前面的子表达式至少n次
{n,m} 匹配前面的子表达式至少n次,至多m次
` `
( ) 分组,将多个字符组合为一个单元

常用正则表达式示例

  1. 邮箱地址:

    ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
    
  2. URL:

    ^https?://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$
    
  3. 手机号码(中国):

    ^1[3-9]\d{9}$
    
  4. 身份证号(18位):

    ^[1-9]\d{5}(19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[\dXx]$
    
  5. 日期(YYYY-MM-DD):

    ^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$
    

在不同语言中的使用

Python

import re

pattern = r'\d+'  # 匹配一个或多个数字
text = "There are 123 apples and 456 oranges."

# 查找所有匹配
matches = re.findall(pattern, text)  # 返回 ['123', '456']

# 替换
new_text = re.sub(pattern, "NUM", text)  # "There are NUM apples and NUM oranges."

JavaScript

const pattern = /\d+/g;
const text = "There are 123 apples and 456 oranges.";

// 查找所有匹配
const matches = text.match(pattern);  // 返回 ["123", "456"]

// 替换
const newText = text.replace(pattern, "NUM");  // "There are NUM apples and NUM oranges."

进阶技巧


  1. 非贪婪匹配: 在 *+后加 ?表示非贪婪匹配

    <.*?>  # 匹配最短的HTML标签
    
  2. 正向预查和负向预查:

    • (?=pattern) 正向肯定预查
    • (?!pattern) 正向否定预查
    • (?<=pattern) 反向肯定预查
    • (?<!pattern) 反向否定预查
  3. 分组捕获:

    (\d{4})-(\d{2})-(\d{2})  # 匹配日期并分别捕获年、月、日
    
0

评论区