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

如何使用正则表达式删除字符串中的非拉丁文字段落(JS环境)

问题原因

你之前使用的硬编码Unicode范围[ɐ-]覆盖逻辑不严谨:既会漏匹配部分小众非拉丁语种字符,也会误将弯引号、全角标点这类不属于拉丁字母的通用标点划入匹配范围,最终导致英文段落内的标点被误删。

可行解决方案

JS 正则支持 Unicode 属性转义,可以精准识别非拉丁书写系统的字符,无需手动维护字符范围,正则逻辑为:匹配到任意非拉丁脚本字符后,删除后续所有内容直到遇见下一个英文字母a-zA-Z为止。

完整实现代码如下:

const rawText = `or perhaps, a - אוֹ דִילְמָא אֵין אִשָּׁה מִתְקַדְּשֶׁת לַחֲצָאִין כְּלָל (12);time
תֵּיקוּ
person cannot be in separate halves at all, even
though both "halves” would come together simultaneously?(13)
The speaker replies:(14)`;

// 正则说明:
// \P{Script=Latin}:匹配所有不属于拉丁书写系统的字符
// (?:(?![a-zA-Z]).)*:匹配后续所有不是英文字母的内容,直到遇见第一个英文字母停止
// g:全局匹配,s:允许.匹配换行符,u:启用Unicode属性匹配
const processedText = rawText.replace(/\P{Script=Latin}(?:(?![a-zA-Z]).)*/gus, '');

输出结果

上述代码处理后得到的结果完全符合预期:

or perhaps, a - time
person cannot be in separate halves at all, even
though both "halves” would come together simultaneously?(13)
The speaker replies:(14)

注意事项

如果你的使用场景需要额外保留非拉丁段落内的部分特定字符(比如数字、括号),可以在否定前瞻(?![a-zA-Z])里补充对应的字符规则即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 04:09:00