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

时间:2013-10-29 07:31:30

标签: javascript regex

我想使用允许

的正则表达式
  1. 没有特殊字符的英文文本。
  2. 没有特殊字符的法语文本。
  3. 在这两种语言中,它总是不允许使用@,#,%等特殊字符。

    我尝试使用以下代码:

    if (this.value.match(/[^a-zA-Z0-9 ]/g)) {
        this.value = this.value.replace(/[^a-zA-Z0-9 ]/g, '');
    }
    

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

    有没有办法让正则表达式中包含法语字符?

    提前多多感谢。

3 个答案:

答案 0 :(得分:10)

快速解决方案:

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

参考: List of french characters

希望这有帮助

答案 1 :(得分:4)

最简化的解决方案:

/[^a-zA-ZÀ-ÿ]/  

(或)

/[\wÀ-ÿ]/       // Note: This will allow "_" also

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

答案 2 :(得分:0)

我会在替换字符之前建议normalizing字符串。

此示例是JAVA规范化,但也许this example可以帮助您使用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 ]", ""));