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

如何合并正则表达式以仅保留英文与阿拉伯字母字符?

合并正则保留英文与阿拉伯字符

原代码的问题在于两次替换逻辑互斥:第一次删掉了所有非英文的字符(包括阿拉伯文和空格),第二次又删掉了所有非阿拉伯的字符(剩下的英文),最终自然为空字符串。

要实现仅保留英文、阿拉伯字符(以及示例中的空格),只需用一个否定字符类的正则,一次性匹配所有不需要保留的字符并替换为空:

String str = "123hello!#$% مرحبا. ok";
// 保留英文、阿拉伯字符和空格,删除其他所有字符
str = str.replaceAll("[^a-zA-Z\\p{InArabic}\\s]", "");
System.out.println(str); // 输出:hello مرحبا ok

正则说明

  • [^...]:否定字符类,匹配所有不在括号内的字符
  • a-zA-Z:匹配英文大小写字母
  • \\p{InArabic}:匹配阿拉伯语字符(Java中\需要双写转义)
  • \\s:匹配空白字符(如果不需要保留空格,直接去掉这部分即可)

如果只需要严格保留字母(不含空格),把正则改成 [^a-zA-Z\\p{InArabic}] 就行,输出会变成helloمرحباok。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 10:57:42