【问题标题】:Javascript regular expression to match French characters用于匹配法语字符的 Javascript 正则表达式
【发布时间】:2018-04-29 03:30:42
【问题描述】:

我需要用正则表达式匹配带有法语字符 (dérange) 的单词。到目前为止,我有这个:

    var text = "An inconvenient (qui dérange) truth";
    var splitText = text.trim().match(/\w+|\s+|[^\s\w]+/g);
    
    console.log(splitText);

但是,它将é 视为一个单独的字母。为什么?

我需要match() 方法中的正则表达式,以便splitText 对象还包含单词déranger,而不是像现在那样包含三个单词dérange

【问题讨论】:

  • \w on MDN:“匹配基本拉丁字母表中的任何字母数字字符,包括下划线。等效于 [A-Za-z0-9_]。”
  • 制作自己的角色类text.trim().match(/[a-zàâçéèêëîïôûùüÿæœ]+|\s+|[^a-zàâçéèêëîïôûùüÿæœ\s]+/gi);

标签: javascript regex diacritics french


【解决方案1】:

您可以尝试使用正则表达式 split method 来获取文本中的所有单词,这是一个有效的示例:

var text = "An inconvenient (qui dérange) truth";

var splitText = text.trim().split(/\s+/);

console.log(splitText);

【讨论】:

  • 谢谢YouneL。您的解决方案确实有效,但我需要保留每个元素,甚至是括号。
  • 欢迎您,但如果您想保持元素原样,使用var splitText = text.trim().split(/\s+/); 会更好更快,请查看此基准链接:match vs split
  • 你知道如何让正则表达式识别括号,即使两者之间有空格(比如在我的例子中:“(qui”)。我希望它变成:“( " + "qui"。谢谢 YouneL
  • 我也需要保留空格(我忘了在上一条消息中添加这个)。
  • text.trim().match(/\(|[^\s\)]+|\)|\s+/g);
【解决方案2】:

您似乎想将空格与非空格分开。但是,非空格有两个表达式:\w+(匹配[a-zA-Z_0-9]+)和[^\s\w]+(匹配其他所有内容,除了空格 - 所以这是单独匹配é。只需将这两个组合成@987654325 @ 或 - 更简单 - \S+:

var text = "An inconvenient (qui dérange) truth";
var splitText = text.trim().match(/\S+|\s+/g);
console.log(splitText);

【讨论】:

  • 工作正常。谢谢伯吉。
猜你喜欢
  • 1970-01-01
  • 2014-05-10
  • 1970-01-01
  • 1970-01-01
  • 2012-04-15
  • 2019-03-16
  • 1970-01-01
  • 1970-01-01
  • 2013-07-03
相关资源
最近更新 更多