我想使用允许
的正则表达式在这两种语言中,它总是不允许使用@,#,%等特殊字符。
我尝试使用以下代码:
if (this.value.match(/[^a-zA-Z0-9 ]/g)) {
this.value = this.value.replace(/[^a-zA-Z0-9 ]/g, '');
}
它适用于英文文本,但问题是当我提供像éléphant这样的法语文本时,它会将法语字符视为特殊字符,并删除法语字符。所以éléphant变成了lphant。
有没有办法让正则表达式中包含法语字符?
提前多多感谢。
答案 0 :(得分:10)
答案 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 ]", ""));