保留多语种字母数字下划线的正则处理印地语字符异常求助
问题根因
\p{L}仅匹配Unicode分类中的基础字母,印地语天城文中的元音附标、辅音连接符等附属标记属于Unicode的\p{M}分类(标记类字符,包含变音符号、组合标记等),不在\p{L}的匹配范围内,因此被原正则判定为非法字符过滤,最终出现输入#फ्रांस处理后丢失标记得到फरस的异常。
修复方案
将\p{M}加入正则的允许保留字符集合即可,修正后的正则为:/[^\p{L}\p{M}\d_]/gimu
该正则会同时保留各语种的基础字母、附属标记、数字和下划线,仅过滤其余无关字符,处理#फ्रांस时仅会剔除开头的#,输出完整的फ्रांस符合预期。
内容的提问来源于stack exchange,提问作者Martin Ratinaud
相关产品推荐
相关产品推荐

