2013-08-02 7 views
0

Je dois remplacer un exemple de code: OD3 - Le premier doit toujours être un caractère alpha, un second caractère alphanumérique et le dernier doit toujours être numérique. Quel est le regular expression pour vérifier et replace le premier et réglementer le reste pour entrer correctement? Un utilisateur peut entrer dans le numéro 0 au lieu de la lettre O, donc je veux corriger immédiatement ...Javascript Remplacer - Expression régulière

c'est ce que j'ai jusqu'à présent: onkeyup="this.value=this.value.replace(/[^a-zA-z]/g,'')

+3

Que voulez-vous dire par - * régler le reste pour entrer correctement *? –

+0

Que devrait-il se passer si ce n'est pas correct? Vide la valeur? Aussi combien de remplacements y a-t-il, est-ce juste '0' =' O'? – SmokeyPHP

Répondre

0

Il vaut mieux avoir comme ça.

onkeyup="testRegex(this.value)"; 

Il n'est pas .replace() il est .test()

function testRegex(value) { 
    if(value.test(/[^a-zA-z]/g)) { 
     alert("Please enter correct value"); 
     return false; 
    } 
} 
1

D'abord, je vous suggère de simplement indiquer l'erreur à un utilisateur au lieu de remplacer les valeurs. Quelque chose comme

oninput="if (! /^[a-z][a-z0-9]\d$/i.test(this.value)) displayMessage('incorrect code');" 

Si vous avez certainement de remplacer la valeur à la volée, vous pouvez faire somthing comme ça:

oninput='validateValue()'; 
... 
function validateValue() { 
    var val = this.value; 
    if (! /[a-z]/i.test(val[0]) this.value = ''; 
    else if (! /[a-z0-9]/i.test(val[1]) this.value = val.slice(0,1); 
    else if (! /\d/.test(val[2]) this.value = val.slice(0,2); 
}