【问题标题】:Regex and Javascript : find word with accents [duplicate]正则表达式和 Javascript:查找带有重音符号的单词 [重复]
【发布时间】:2015-02-21 16:42:40
【问题描述】:

我尝试在 HTML 段落中查找和存储所有单词。

其实我有这样的功能

p.html(function(index, oldHtml) {
return oldHtml.replace(/\b(\w+?)\b/g, '<span>$1</span>');
});

但它只是返回没有重音的单词。 我在 regex101.com 上测试 https://www.regex101.com/r/jS5gW6/1

有什么想法吗?

【问题讨论】:

  • 你需要使用unicodes..
  • 您需要找到only 个包含重音符号的单词,还是所有 个单词?请注意,部分问题是\w 无法将重音字符识别为“单词”字符,另一部分是\b 在内部使用\w 的定义来扫描单词边界。因此,即使将 éç 添加到具有 \w 的类中也不能解决所有问题。
  • @Jongware 我需要找到所有单词。

标签: javascript regex non-ascii-characters


【解决方案1】:

使用字符类:

oldHtml.replace(/([\wàâêëéèîïôûùüç]+)/gi, '<span>$1</span>');

尝试一下:

var oldHtml = 'kjh À ùp géçhj ùù Çfg';
var res = oldHtml.replace(/([\wàâêëéèîïôûùüç]+)/gi, '<span>$1</span>');

给了

"<span>kjh</span> <span>À</span> <span>ùp</span> <span>géçhj</span> <span>ùù</span> 

切磋”

【讨论】:

  • 多么奇怪——但感谢您的澄清!我假设i 不会“忽略大小写”因为 JS 的正则表达式不支持重音字符。我想它在下面使用一般的toLowerCase()
  • 谢谢你,它的工作...正则表达式很复杂:-)
  • @jcbaudot:不客气,很高兴它有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-29
  • 1970-01-01
  • 2020-07-01
相关资源
最近更新 更多