2016-05-27 1 views
1

Tout d'abord, j'ai vérifié les solutions possibles mais je n'ai pas trouvé de solution qui m'aide à résoudre mon problème. En bref, j'ai une logique existante qui reçoit le courrier électronique de l'utilisateur et teste quelques conditions, comme s'assurer qu'il n'y a pas d'apostrophe, de double signe et de points consécutifs, etc. La logique n'est pas implémentée avec regex.Restreindre l'acceptation d'un e-mail contenant des caractères non-anglais

Maintenant, j'ai une nouvelle exigence, nous devons empêcher l'utilisateur d'entrer des caractères non anglais, par restriction je veux dire essayer de l'attraper pendant que l'utilisateur entre un caractère non anglais ou l'attraper pendant que la valeur est passée à la fonction javascript autres conditions ci-dessus.

donc j'ai trouvé quelques réponses ici et les ont essayé: here

Voici mon code:

<input type="text" id="ctEmailAddress" name="ctEmailAddress" autocomplete="off" 
      size="40" maxlength="255" value="${userinfo.emailAddress}" oncopy="return false;" onpaste="return false;" onkeypress="suppressNonEng(event)"> 

et scénario:

function suppressNonEng(event){ 
    var englishAlphabetAndWhiteSpace = /[A-Za-z ]/g; 
    var key = String.fromCharCode(event.which); 
    if (englishAlphabetAndWhiteSpace.test(key)) { 
     return true; 
    } 
    alert ("this is not in English"); 
    return false; 
} 

J'utilise la fonction js de lien, il est séparé de la logique actuelle. Le problème est, il permet toujours de passer des caractères non anglais, par exemple français.

est de même pour cette fonction:

function suppressNonEng(event){ 
    var key = event.which; 
    if(key > 128){ 
     alert("Email address can be entered only in English. Please try again."); 
    } 
} 

Encore une fois, les lettres françaises ont aucun problème à aller à travers elle.

Ma question est, comment puis-je m'assurer que cette valeur est seulement des caractères anglais? Dois-je utiliser regex pour cela ou il y a une meilleure solution? Veuillez nous conseiller Merci.

+1

Retirez le modificateur 'g' de la regex puisque vous êtes u chantez avec 'RegExp # test' –

+2

Pourquoi avez-vous besoin d'empêcher de tels caractères non-anglais? De telles exigences me semblent très naïves et je ne vois pas ce que vous voudriez réaliser avec. –

+1

@RaphaelMiedl caractères non anglais causent des problèmes dans notre base de données, j'ai besoin de développeurs seniors pour restreindre l'entrée des emails non anglais. – Foxy

Répondre

1

Description de

[^\x00-\x7F]+ 

Regular expression visualization

Cette expression régulière correspond à tout caractère qui est en dehors ascii 0-127

Exemple

Démo en direct

https://regex101.com/r/qN7eP6/1

Exemple de texte

Here are some sample non-english characters: ü, ö, ß, and ñ. 

échantillon Matchs

[0][0] = ü 
[1][0] = ö 
[2][0] = ß 
[3][0] = ñ 

Explication

NODE      EXPLANATION 
---------------------------------------------------------------------- 
    [^\x00-\x7F]+   any character except: ascii 0-127 also known as 
          '\x00' to '\x7F' (1 or more times 
          (matching the most amount possible)) 
----------------------------------------------------------------------