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

如何解决正则\p{L}模式无法匹配含组合字符的泰文字符串?

正则表达式匹配泰文姓名失败的问题

我需要检测仅包含Unicode字母的文本(例如各类Unicode语言的人名,不含符号、表情等)。原本认为\p{L}类别能满足需求,但测试泰文字符串时全部失败。我不懂泰语,用ChatGPT生成的几个常见泰语姓名测试,不管是在正则验证工具还是自行编写的C#程序中均匹配失败。

测试程序代码如下:

using System.Text.RegularExpressions;

Console.OutputEncoding = System.Text.Encoding.UTF8;

string pattern = @"^[\p{L}\s]+$";

string englishText = "Mary";
Console.Write($"{englishText}: ");
Console.WriteLine(Regex.IsMatch(englishText, pattern, RegexOptions.IgnoreCase).ToString()); // true

string germanText = "RöschenÜmit";
Console.Write($"{germanText}: ");
Console.WriteLine(Regex.IsMatch(germanText, pattern, RegexOptions.IgnoreCase).ToString()); // true

string thaiText = "อรุณรัตน์";
Console.Write($"{thaiText}: ");
Console.WriteLine(Regex.IsMatch(thaiText, pattern, RegexOptions.IgnoreCase).ToString()); // false

string japaneseText = "タクミたくみく";
Console.Write($"{japaneseText }: ");
Console.WriteLine(Regex.IsMatch(japaneseText, pattern, RegexOptions.IgnoreCase).ToString()); // true

我排查发现:单独测试泰文字符串中的每个字符时,它们都被识别为有效的Unicode字母,但整串匹配却失败。已检查字符串原始值,未发现隐藏字符。

关键提示:泰文字符串包含组合字符,即使视觉上是单个字符(例如由{0e23, 0xe38}组成的"รุ"),也可能导致字母检测失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 01:20:32