'Regular Expression to allow french text as well as english text?
I want to use a regular expression which will allow
- English text which does not have a special character.
- French Text which does not have a special character.
It will always disallow special characters like @, #, % etc... in both the language.
I have tried with the below code:
if (this.value.match(/[^a-zA-Z0-9 ]/g)) {
this.value = this.value.replace(/[^a-zA-Z0-9 ]/g, '');
}
It works fine with english text, but the problem is when I provide a french text like éléphant, it considers the french characters as special character, and deletes the french characters. so éléphant becomes lphant.
Is there any way to allow the french characters inside the regular expression?
Thanks a lot in advance.
Solution 1:[1]
Quick solution:
/[^a-zA-Z0-9 àâäèéêëîïôœùûüÿçÀÂÄÈÉÊËÎÏÔŒÙÛÜŸÇ]/
Reference: List of french characters
Hope this helps
Solution 2:[2]
Most simplified solution:
/[^a-zA-ZÀ-ÿ]/
(or)
/[\wÀ-ÿ]/ // Note: This will allow "_" also
Any of the above regular expression will work in your case.
Solution 3:[3]
I would suggest normalizing string before replacing chars.
This example is a JAVA normalization, but maybe this example could help you with 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 ]", ""));
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | |
| Solution 2 | Sam G |
| Solution 3 | Community |
