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

如何在JavaScript中从指定URL提取invitation_token和study_token?

解决URL中invitation_token和study_token的提取问题

别担心,我来帮你搞定这个token提取的难题!从你提供的带HTML格式的内容来看,核心问题是原始内容混了HTML标签,导致正则匹配容易出错,另外直接写正则处理URL参数也不如用专门的URL解析工具可靠。下面给你两种可行的方案:

方案一:先清理HTML内容,再用URL解析工具提取(推荐)

这种方法最稳妥,因为专门的URL解析库已经帮我们处理了参数的编码、分隔符等细节,不用自己写容易出错的正则。

示例(Python)

import re
from urllib.parse import urlparse, parse_qs

# 你的原始HTML内容
raw_html = '''<p><a href="http://staging.example.com/invitation/accept?invitation_token=" rel="nofollow noreferrer">http://staging.example.com/invitation/accept?invitation_token=</a><strong>_86uiB3VskV5VATReut</strong>9&amp;study_token=<strong>9d9ba0207a35971490aee5a11a40cc526b73137d047f1a8506a2b65e9e349706268cc7ab0ef6130a66913d01628b15f646e947d6b5dc4d874d675b4194ae6788</strong></p>'''

# 步骤1:移除所有HTML标签
clean_text = re.sub(r'<[^>]+>', '', raw_html)
# 步骤2:把HTML转义的&amp;替换成真实的&符号
clean_url = clean_text.replace('&amp;', '&')

# 步骤3:解析URL参数
parsed_url = urlparse(clean_url)
params = parse_qs(parsed_url.query)

# 提取token(用get方法避免KeyError)
invitation_token = params.get('invitation_token', [''])[0]
study_token = params.get('study_token', [''])[0]

print(f"invitation_token: {invitation_token}")
print(f"study_token: {study_token}")

示例(JavaScript)

const rawHtml = '<p><a href="http://staging.example.com/invitation/accept?invitation_token=" rel="nofollow noreferrer">http://staging.example.com/invitation/accept?invitation_token=</a><strong>_86uiB3VskV5VATReut</strong>9&amp;study_token=<strong>9d9ba0207a35971490aee5a11a40cc526b73137d047f1a8506a2b65e9e349706268cc7ab0ef6130a66913d01628b15f646e947d6b5dc4d874d675b4194ae6788</strong></p>';

// 步骤1:移除HTML标签
const cleanText = rawHtml.replace(/<[^>]+>/g, '');
// 步骤2:替换&amp;为&
const cleanUrl = cleanText.replace('&amp;', '&');

// 步骤3:解析参数
const url = new URL(cleanUrl);
const invitationToken = url.searchParams.get('invitation_token');
const studyToken = url.searchParams.get('study_token');

console.log(`invitation_token: ${invitationToken}`);
console.log(`study_token: ${studyToken}`);

方案二:调整正则表达式直接匹配

如果你一定要用正则,需要先处理HTML标签的干扰,或者写一个能跳过标签的正则。比如针对你的原始HTML内容,可以用以下正则提取:

提取invitation_token

invitation_token=.*?([\w_]+)</strong>(\w+)

把两个分组的结果拼接起来,就是完整的_86uiB3VskV5VATReut9

提取study_token

study_token=<strong>([\w]+)</strong>

分组1就是完整的study_token值

不过这种正则的局限性很大——如果HTML结构稍有变化(比如标签位置变了),正则就会失效,所以还是推荐方案一。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:02:20