【问题标题】:Letters with apostrophe disappears [duplicate]带撇号的字母消失了[重复]
【发布时间】:2016-08-24 08:21:50
【问题描述】:

这是我验证电子邮件地址的正则表达式。但它不断删除带有撇号的字母。例如(Hélen,变成 Hlen)

var firstname = $("#FirstName").val().replace(/å/gi, "a").replace(/ä/gi,"a").replace(/ö/gi, "o").replace(/[^a-z0-9\s]/gi, '');

var lastname = $("#LastName").val().replace(/å/gi, "a").replace(/ä/gi, "a").replace(/ö/gi, "o").replace(/[^a-z0-9\s]/gi, '');

$("#Mail").val(firstname + "." + lastname + '@customer.Email');

【问题讨论】:

  • 你的问题是什么,你想让你的正则表达式做什么?移除、更换或保留它们?
  • 这不是撇号。
  • [^a-z0-9\s] 匹配不是az 之间的字母或09 之间的数字的任何内容,并将其删除。这不是验证电子邮件的正确方法。
  • 他正在根据名字和姓氏构建电子邮件 ID。 replace(/[^a-z0-9\s]/gi, '') 用 "" 删除你的 é,因此 Hélen 变成 Hlen

标签: javascript regex model-view-controller


【解决方案1】:

我认为您实际上需要的是用非重音版本替换重音字符。

我在这里找到了这个解决方案:Remove accents/diacritics in a string in JavaScript

希望对你有帮助

【讨论】:

    【解决方案2】:

    使用:replace(/[^a-z0-9\s]/gi, ''),您将用空字符串替换任何不是 非重音字母 的内容。 这就是它被删除的原因。

    为了避免这种情况发生,您必须使用“é”,就像使用“å”或“ä”一样,将其替换为非重音字母。

    例如,要将“é”、“è”、“ê”和“ë”替换为 e,您可以使用replace(/[éèêë]/gi, "e") 之前使用replace(/[^a-z0-9\s]/gi, '')

    你必须对“à”和“ô”等做同样的事情......

    【讨论】:

    • 非常感谢!现在可以使用了。
    猜你喜欢
    • 2012-08-22
    • 2015-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-02
    • 2014-06-30
    • 2020-07-07
    相关资源
    最近更新 更多