首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正则表达式允许法语文本和英语文本?

正则表达式允许法语文本和英语文本?
EN

Stack Overflow用户
提问于 2013-10-29 07:31:29
回答 3查看 17.4K关注 0票数 7

我想使用一个正则表达式,它将允许

  1. 没有特殊字符的英语文本。
  2. 没有特殊性质的法文文本。

它将永远不允许像@,#,%等特殊字符.用这两种语言。

我尝试使用以下代码:

代码语言:javascript
复制
if (this.value.match(/[^a-zA-Z0-9 ]/g)) {
    this.value = this.value.replace(/[^a-zA-Z0-9 ]/g, '');
}

它适用于英文文本,但问题是,当我提供像éléphant这样的法文文本时,它将法语字符视为特殊字符,并删除法语字符。苏莱芬特变成了伊凡特。

是否有任何方法允许正则表达式中的法语字符?

提前谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-10-29 09:05:03

快速解决方案:

代码语言:javascript
复制
/[^a-zA-Z0-9 àâäèéêëîïôœùûüÿçÀÂÄÈÉÊËÎÏÔŒÙÛÜŸÇ]/

参考资料:法语字符列表

希望这能有所帮助

票数 13
EN

Stack Overflow用户

发布于 2017-06-19 10:36:27

最简化的解决方案:

代码语言:javascript
复制
/[^a-zA-ZÀ-ÿ]/  

(或)

代码语言:javascript
复制
/[\wÀ-ÿ]/       // Note: This will allow "_" also

上述任何一个正则表达式都适用于您的情况。

票数 5
EN

Stack Overflow用户

发布于 2013-10-29 08:22:25

在替换字符之前,我建议使用正规化字符串。

这个示例是JAVA规范化,但也许这个例子可以帮助您使用javascript。

代码语言:javascript
复制
    String string = "éléphante";

    string = Normalizer.normalize(string, Normalizer.Form.NFD);

    string = string.replaceAll("[^\\p{ASCII}]", "");

    System.out.println(string.replaceAll("[^a-zA-Z0-9 ]", ""));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19652188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档