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

如何在JavaScript中用正则表达式匹配非英文单词?

非英文单词的正则提取方案

核心问题原因

\w 正则元字符默认仅匹配 ASCII 范围内的字母、数字和下划线(即 [a-zA-Z0-9_]),无法识别其他语言的 Unicode 字母,所以对印地语这类非英文文本无效。

解决方案:使用 Unicode 属性类

正则引擎支持 Unicode 属性的情况下,用以下方式匹配任意语言的单词:

  1. 通用匹配所有语言字母
    使用 \p{L} 匹配任意 Unicode 字母(涵盖全球几乎所有语言的字符),结合 + 匹配一个或多个连续字母:
^(\p{L}+)
  1. 精准匹配特定语言脚本
    如果只针对印地语(天城文脚本),可以用 \p{Devanagari} 精准匹配该脚本的字符,避免匹配其他语言:
^(\p{Devanagari}+)

代码示例

Python(Python 3 正则默认支持 Unicode)

import re
text = "क्या आप क्लोज़अप करते हैं "
result = re.match(r'^(\p{L}+)', text)
print(result.group(1))  # 输出:क्या

JavaScript(需添加 u 标志启用 Unicode 模式)

const text = "क्या आप क्लोज़अप करते हैं ";
const match = text.match(/^(\p{L}+)/u);
console.log(match[1]); // 输出:क्या

注意事项

  • 确保使用的正则引擎支持 Unicode 属性类(主流语言如 Python、JavaScript、Java、C# 均支持,部分老旧工具可能不兼容)。
  • 如果目标单词包含连字符、变音符号等特殊字符,可以扩展正则,比如加入 \p{M}(匹配变音符号)、\-等,例如:^(\p{L}\p{M}*-?)+。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 22:45:11