【问题标题】:ignore accent in regex [duplicate]忽略正则表达式中的重音[重复]
【发布时间】:2012-10-22 23:37:50
【问题描述】:

可能重复:
How to ignore acute accent in a javascript regex match?

我有一些 javascript:

var myString = 'préposition_preposition';
var regex = new RegExp("epo", "ig");
alert(myString.match(regex));

如果我在正则表达式中仅设置 epo(或仅 épo),是否可以匹配“épo”和“epo”?

【问题讨论】:

  • 点击链接。这与您的问题完全相同,并且有有用的答案。为避免在本网站上出现重复,我们尽可能“关闭为重复”:)
  • 在尝试正则表达式匹配之前,是否可以完全去除原始字符串中的重音符号? lehelk.com/2011/05/06/script-to-remove-diacritics
  • 谢谢,我会尝试用这个例子来实现我的正确方法
  • 为什么不试试替换? alert(myString.replace('é', 'e'))

标签: javascript html regex


【解决方案1】:

试试这个:

var str = 'préposition_preposition';
str.match(/(e|é)po/gi);

【讨论】:

  • 宁愿使用字符类,这就是它们的用途。另外,匹配器不必存储子匹配。
  • 为什么最差的解决方案获得了支持?
  • 有什么方法可以忽略重音吗?
  • 缬草正如@clentfort所说,正则表达式与您所说的完全匹配,我们不能忽略é。
【解决方案2】:

我最近遇到了同样的问题。正则表达式使用 ascii 运行,因此无法识别 éß 等特殊字符。您需要明确地将它们包含在您的正则表达式中。

使用这个:

var regex = /[ée]po/gi;

提示:不要使用new Regex(),它相当慢,而是直接声明正则表达式。这也解决了一些引用/转义问题。

【讨论】:

  • 问题是我有两个大文本(法语,英语)我搜索最标准的方法来忽略重音,执行匹配并在丢失原始文本中显示结果
  • 好吧,你要么需要替换那些重音符号,(看看at this answer)要么你总是必须手动声明字符类,就像我的回答一样。
【解决方案3】:

不,您无法实现此行为。 RegEx 与您提供的字符串完全匹配。计算机如何知道époepo 何时是你要找的!

但是你可以指定一个class of chracters可以匹配new RegExp("[eé]po", "ig");

【讨论】:

    猜你喜欢
    • 2012-05-15
    • 1970-01-01
    • 2018-01-21
    • 2019-02-08
    • 2013-08-13
    • 2015-10-02
    • 1970-01-01
    • 2019-11-17
    • 2020-01-16
    相关资源
    最近更新 更多