Rechercher : dans
Par :

Regex avec javascript

Dernière réponse le 18 mar 2009 à 10:02:47 rukire, le 17 mar 2009 à 15:34:05 
 Signaler ce message aux modérateurs

Bonjour,
Je galère a écrire une fonction avec javascript,
en fait lorsque l'utilisateur tape quelque chose donc onkeyup="...(this)" dans mon formulaire a l'élément souhaité.
la chaine ne doit pas commencer par un chiffre et ne doit pas contenir d'espace, de tiret et de @ (les caractères interdit dans une varible perl en gros)

voila mon script :

function verifsaisie(elem)
{
var valeur = elem.value;
var reg = new RegExp("^[^0-9][^@ -]", "gi");

if(valeur.match(reg))
{
alert("Vous ne devez pas entrer de caractères spéciaux !\n(début de chaine par un chiffre, pas d'espace, ni de tiret, ni d'arobase)");
elem.value = "";
}

}

si quelqu'un voit pourquoi ca ne marche pas ou a une idée, je lui en suis très reconnaissante de m'aider.
Sinon merci quand même d'avoir lu

Configuration: Linux
Firefox 3.0.7

Meilleures réponses pour « regex avec javascript » dans :
Javascript - L'objet RegExp Voir Les particularités de l'objet RegExp L'objet RegExp est un objet permettant de manipuler des expressions régulières, c'est-à-dire des modèles créés à l'aide de caractères ASCII permettant de manipuler des chaînes de caractères, afin de trouver des...
Javascript - Modifier la hauteur (height) d'un élément HTML VoirPour modifier la hauteur d'un élément HTML en javascript, il suffit d'utiliser sa propriété de style "height". Pour cela vous pouvez y faire référence de la manière suivante : Si vous souhaitez connaître la hauteur (height) d'un bloc HTML, il...
Javascript - Concaténation de chaînes de caractères VoirLe terme "concaténer" signifie joindre deux chaînes bout à bout pour n'en former qu'une seule. Dans la plupart des langages tels que PHP, la concaténation se fait avec le caractère ".". En javascript, il suffit d'utiliser le caractère plus (+) ou...
Javascript - Les événements VoirQu'appelle-t-on un événement? Les événements sont des actions de l'utilisateur, qui vont pouvoir donner lieu à une interactivité. L'événement par excellence est le clic de souris, car c'est le seul que le HTML gère. Grâce au Javascript il est...
Javascript - Les variables VoirLe concept de variable Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. En Javascript, les noms de variables peuvent être aussi long que l'on désire,...
Javascript - Introduction au langage Javascript VoirQu'est-ce que le Javascript? Le Javascript est un langage de script incorporé dans un document HTML. Historiquement il s'agit même du premier langage de script pour le Web. Ce langage est un langage de programmation qui permet d'apporter des...

1

NookZ, le 17 mar 2009 à 15:39:01

Function verifSaisie(evt)
{
var keyCode = evt.which ? evt.which : evt.keyCode;
var mask = '^[0-9]{1,3}|\u0009|\u0008|\u000D$';
var reg = new RegExp(mask,"g");
if(!reg.test(String.fromCharCode(keyCode))){
return false;
}
}

et je mets onkeypress="return verifSaisie(event);" dans l'input
voici mon code, il marche, remplacé le mask par le votre. Par contre ce que je fais c'est juste que j'empêche l'insertion des éléments contenus dans le mask. Pour afficher l'alerte il faudrait le faire juste avant le "return false;"

Répondre à NookZ

2

rukire, le 17 mar 2009 à 15:55:04

Merci mais je ne comprend pas tout à ce qui est fait, et ca n'a pas l'air de marcher (ma méthode doit marcher mais je n'arrive pas a trouver la bonne regex ^^)

Répondre à rukire

3

NookZ, le 17 mar 2009 à 16:05:03

Utilisez ceci pour tester, j'essaie de trouver la bonne regexp en attendant : http://www.annuaire-info.com/outil-referencement/expression-­reguliere/

Répondre à NookZ

4

rukire, le 17 mar 2009 à 16:17:12

Avec ce que tu m'as donné j'ai trouvé ca : ^[a-z][_.a-z0-9]+$
mais ca marche pas très bien ! quoi que je tape ca m'affiche l'erreur :s
merci

Répondre à rukire

5

rukire, le 18 mar 2009 à 09:28:54

Est ce que quelqu'un peut m'aider, avec la regex donné hier, je tape n'importe quoi (une lettre, un chiffre, etc) et ca m'affiche l'alerte, quelqu'un peu m'aider ?
Merci d'avance !

Répondre à rukire

6

NookZ, le 18 mar 2009 à 09:35:46

Je vous conseille de télécharger le module firefox, il vous permettra de débugger car pour le moment je ne vois pas d'erreur.

Je viens de tester votre expression, elle retourne faux quel que soit le cas en utilisant le lien que je vous ai fourni, je cherche une parade

Répondre à NookZ

7

rukire, le 18 mar 2009 à 09:44:31

Ben avec le lien d'hier moi ca marchait ! donc voila je suis complètement perdu et dans une impasse

Répondre à rukire

8

 rukire, le 18 mar 2009 à 10:02:47

J'ai trouvé ! en fait j'avais déja un js qui vérifiait que le nom saisie n'existe pas déja dans un tableau donné en paramètre et donc a ca j'ai ajouté mon code et maintenant ca marche !

js :

function verif_nom (elem,tab,i)
{
// tab est une chaine de caractère séparé par des virgules
// verification que l'element saisie elem ne se trouve pas dans tab
// i indice de elem precedent
var tabnom=tab.split(",");
var newname = elem.value;
for (var j=0;j<tabnom.length;j++)
{
if(i != j)
{
if (tabnom[j] == newname)
{
alert("Le nom entré existe déjà ! Entrez en un nouveau svp");
elem.value = "";
}
}

}
var valeur = elem.value;
var reg = new RegExp("^[a-z._][_.a-z0-9]+$", "gi");

if(valeur.match(reg))
{}
else
{
alert("Vous ne devez pas entrer de caractères spéciaux !\n(début de chaine par un chiffre, pas d'espace, ni de tiret, ni d'arobase)");
elem.value = "";
}
}

input :

$nom='nom'.$i; //choix du nom (avec vérification existance)
echo '<tr><td><label for="nom"><a class="normal" href="guide.php#nom" target="_blank">Nom</a></label> : <input type="text" id="nom" name="'.$nom.'" onblur="verif_nom(this,\''.$str.'\','.$k.');" /></td></tr>';

Merci beaucoup

Répondre à rukire