带撇号的字母消失了[重复]
Posted
技术标签:
【中文标题】带撇号的字母消失了[重复]【英文标题】: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]
匹配不是a
和z
之间的字母或0
和9
之间的数字的任何内容,并将其删除。这不是验证电子邮件的正确方法。
Using a regular expression to validate an email address
他正在根据名字和姓氏构建电子邮件 ID。 replace(/[^a-z0-9\s]/gi, '')
用 "" 删除你的 é,因此 Hélen 变成 Hlen
【参考方案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, '')
。
你必须对“à”和“ô”等做同样的事情......
【讨论】:
非常感谢!现在可以使用了。以上是关于带撇号的字母消失了[重复]的主要内容,如果未能解决你的问题,请参考以下文章
通过 PhpMyAdmin 将带撇号的 SQL 数据库导入 MySQL
将带撇号的 json 值发送到 Web 服务时出现无效对象错误