You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Regex捕获组中去除空格与换行符?

正则捕获纯净电话号码与邮箱地址的解决方案

问题分析

你当前的正则表达式能成功定位电话号码所在的<span>标签内容,但由于匹配范围包含了标签内的换行符和空格,导致捕获结果附带无效空白字符。以下是两种可行的解决思路:

一、优化正则表达式 + 空白字符清理

1. 电话号码捕获

调整正则表达式精准定位目标内容,再通过替换操作去除所有空白字符:

<b id="PHONE">Phone Number:\s*</b>\s*</span>\s*<span[^>]*>\s*(?<Phone>[^<]+)\s*</span>
  • 捕获到Phone分组后,以JavaScript为例清理空白:
    const phoneMatch = html.match(/<b id="PHONE">Phone Number:\s*<\/b>\s*<\/span>\s*<span[^>]*>\s*(?<Phone>[^<]+)\s*<\/span>/s);
    const cleanPhone = phoneMatch?.groups.Phone.replace(/\s+/g, ''); // 最终结果:+32123456789
    

2. 邮箱地址捕获

利用邮箱的格式特征,直接匹配纯净的邮箱内容(注意你的HTML代码中邮箱标签存在笔误,/span>应修正为</span>):

<b id="EMAIL">Email Address:\s*</b>\s*</span>\s*<span[^>]*>(?<Email>[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,})\s*</span>
  • 该正则可直接捕获到无空白的邮箱:john.doe@gmail.com

二、更可靠的替代方案:DOM解析

正则处理HTML容易因结构微调失效,若你的运行环境支持DOM操作,推荐使用DOM解析工具(如Python的BeautifulSoup、浏览器的JavaScript API):

JavaScript示例

// 假设HTML已加载到页面中
const phoneSpan = document.querySelector('#PHONE').parentElement.nextElementSibling;
const cleanPhone = phoneSpan.textContent.replace(/\s+/g, '');

const emailSpan = document.querySelector('#EMAIL').parentElement.nextElementSibling;
const cleanEmail = emailSpan.textContent.trim();

Python示例(使用BeautifulSoup)

from bs4 import BeautifulSoup

html = '''
<!-- 你的HTML代码 -->
'''
soup = BeautifulSoup(html, 'html.parser')

phone_text = soup.find(id='PHONE').parent.next_sibling.next_sibling.text
clean_phone = ''.join(phone_text.split())

email_text = soup.find(id='EMAIL').parent.next_sibling.next_sibling.text
clean_email = email_text.strip()

内容的提问来源于stack exchange,提问作者Yabuki Joe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 10:17:23