【问题标题】:RegEx for all letters (including Chinese, Greek, etc.)所有字母的正则表达式(包括中文、希腊文等)
【发布时间】:2010-11-08 03:37:12
【问题描述】:

我需要一个匹配中文、希腊文、俄文……字母的正则表达式。 我基本上想要做的是删除标点符号和数字。

到目前为止,我“手动”删除了标点符号和数字,但这似乎不是很一致。

我尝试过的另一件事是

/[\p{L}]/

但这不受 Mozilla 支持(我在 Firefox 扩展中使用它)。

【问题讨论】:

  • 您是否只需要根据特定用户的语言匹配字母(这意味着您需要一个区域设置感知正则表达式引擎)还是需要匹配任何可能语言的字母?
  • 您需要删除哪些标点符号?您需要删除 O'Brien 中的撇号吗?
  • [\p{P}\p{N}] 描述标点符号和数字。
  • 感谢这个好问题。我也想这样,但确信这是不可能的。

标签: regex firefox unicode


【解决方案1】:

您尝试过/查看XRegExpUnicode plugin 吗?

<script src="xregexp.js"></script>
<script src="xregexp-unicode.js"></script>
<script>
    var unicodeWord = XRegExp("^\\p{L}+$");
    alert(unicodeWord.test("Ниндзя")); // -> true
</script>

【讨论】:

  • 谢谢,这正是我想要的。不过,我真的不想在我的扩展中包含一个我只使用一次的 8kb 库。 Unicode 插件中的 unicode 范围非常有用,我想我会用它们自己写一些东西。
【解决方案2】:

您会发现很多抱怨当前 ECMA 规范关于正则表达式没有按应有的方式处理 unicode 字符。例如。 blog entry by Scott Hanselman 链接回 SO 问题 ;-)
这个问题还没有“真正的”解决方案,但看看Javascript + Unicode regexes 的答案(你的问题或多或少是这个问题的重复)(编辑:我收回,unicode 插件 Jonathan Lonowski 建议看起来很漂亮不错)

【讨论】:

    猜你喜欢
    • 2022-01-10
    • 2018-04-09
    • 2021-10-07
    • 1970-01-01
    • 1970-01-01
    • 2016-12-28
    • 2011-01-30
    • 2011-08-20
    • 2013-11-26
    相关资源
    最近更新 更多