【问题标题】:Match Regular Expression German Language匹配正则表达式德语
【发布时间】:2014-09-18 12:31:24
【问题描述】:

我使用两个正则表达式来匹配文本。

var RegExp = /[^\W\d](\w|[-'](?=\w))*/gi;
var RegExpOthers = /[^\W\d]{4,}(\w|[-']{1,2}(?=\w))*/gi;

目前不会匹配包含 ä、ü、ö...(德语字母)等字母的单词。

如何扩展这些表达式?

【问题讨论】:

标签: javascript regex


【解决方案1】:

应该这样做:

[^\x00-\x7F]+

它匹配任何不包含在ASCII character set 中的字符(0-127,即 0x0 到 0x7F)。你可以用 Unicode 做同样的事情:

[^\u0000-\u007F]+

【讨论】:

  • 我试过这个...如果我使用表达式 var RegExp = /[^\W\d]+[^\x00-\x7F](\w|[-'] (?=\w))*/gi;它只为字符串“der schöne baum ist schön”返回“schön”和“schöne”
  • 您可以添加所有可能的字符
  • 完整列表german character
  • 对不起,我又要问了:如果我使用我评论中提到的RegExp,为什么它不返回单词'der','baum'和'ist',而只有“schön”和“schöne”我想,我有一个语法错误。
【解决方案2】:

这是 Unicode 字符的主题。

发生的情况是,您的示例中的 ä, ü, ö.. 不是单个字母而是 2,因为波浪号也算作一个字符。这带来了许多复杂性和需要遵循的规则才能满足 Unicode 规则。

您可以执行以下操作:([\x{0049}-\x{0130}]) 以使用波浪号来满足例如 i,但此表达式可能会有所不同,具体取决于您是否要在 .net、java、javascript 或 php 上使用此表达式。

Online Demo

您还可以在这里查看每个字符代表的代码:

http://www.fileformat.info/info/unicode/char/search.htm?q=%C4%B0&preview=entity

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-04
    • 1970-01-01
    • 2012-04-15
    • 2020-03-23
    • 1970-01-01
    • 1970-01-01
    • 2010-10-30
    • 1970-01-01
    相关资源
    最近更新 更多