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

如何使用正则表达式匹配包含国际化大写字母的首字母大写单词

解决匹配包含国际化字母的首字母大写单词问题

嘿,我来帮你搞定这个正则的问题!你遇到的匹配失效其实是两个小疏忽导致的,咱们一步步理清楚:

你的错误点分析

你修改后的正则/\p{Ll}*\p{Lu}+p{Ll}*/g有两个关键问题:

  1. 漏写反斜杠:最后那段p{Ll}应该是\p{Ll},少了反斜杠之后,正则会把它当成字面量字符串p{Ll}来匹配,自然找不到小写字母;
  2. 缺少Unicode模式修饰符:JavaScript里使用\p{}这类Unicode属性类时,必须加上u修饰符,否则正则引擎无法识别这些Unicode类语法。

正确的正则表达式

要匹配包含国际化字母的首字母大写单词(首字母为Unicode大写字母,后续为Unicode小写字母),正确的正则应该是:

const matches = text.match(/\p{Lu}\p{Ll}*/gu);

各部分说明

  • \p{Lu}:匹配任意Unicode大写字母(覆盖所有国际化大写字母,比如É、Ñ、Ü、А等);
  • \p{Ll}*:匹配零个或多个Unicode小写字母(比如é、ñ、ü、а等),*保证单个大写字母(比如A)也能被匹配;
  • g:全局匹配,找出文本中所有符合条件的单词;
  • u:启用Unicode模式,让正则引擎正确解析\p{}属性类。

示例验证

试试这段测试代码:

const text = "Hello École Straße Привет 123 Test";
const matches = text.match(/\p{Lu}\p{Ll}*/gu);
console.log(matches); // 输出 ["Hello", "École", "Straße", "Привет", "Test"]

额外补充

如果你的场景需要匹配包含连字符、撇号的首字母大写单词(比如O'Neil、Jean-Luc),可以稍微调整正则,把这些特殊字符加入允许的范围:

const matches = text.match(/\p{Lu}[\p{Ll}'’-]*/gu);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 16:14:06