7

我想使用一个允许的正则表达式

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

它总是不允许在这两种语言中使用特殊字符,如 @、#、% 等。

我已经尝试使用以下代码:

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

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

有没有办法允许正则表达式中的法语字符?

提前非常感谢。

4

3 回答 3

13

快速解决方案:

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

参考: 法语字符列表

希望这可以帮助

于 2013-10-29T09:05:03.387 回答
5

最简化的解决方案:

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

(或者)

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

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

于 2017-06-19T10:36:27.093 回答
1

我建议在替换字符之前对字符串进行规范化。

这个例子是一个 JAVA 规范化,但也许这个例子可以帮助你使用 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 ]", ""));
于 2013-10-29T08:22:25.297 回答