J'ai le code suivant sur jsfiddle:
$(document).ready(function() {
$('.testThis').click(function() {
$('.regexValidation').each(function() {
if ($(this).val() != "" || $(this).val() != null) {
// Check the regex
var expression = new RegExp('/^[0-9a-z_]+$/i');
var myVal = $(this).val();
if (expression.test(myVal) == true) {
// All is okay
alert("OK");
} else {
alert("Error");
}
}
});
});
});
4 Réponses :
Votre syntaxe est fausse. p>
changez-le à Contrairement à PHP, JavaScript prend en charge Regex littéraux em> le syntaxe Le constructeur var expression = / ^ [0-9a-z _] + $ / i; code> p>
/.../ code> crée un objet REGEXP code> objet. p>
regexp code> prend une regex comme une chaîne, sans séparateurs.
Par conséquent, vous pouvez également écrire nouveau regexp ('^ [0-9a-z _] + $', 'i') code> p>
Bien, tu apprends quelque chose de nouveau tous les jours! Je pensais que le manque de citations pourrait causer des erreurs JS, mais évidemment pas. Merci pour la réponse et l'explication.
Merci, cela me sauve-moi, mais aussi, vous devez éliminer les espaces dans chaque littéral. J'essayais de faire cela: [#,%] mais toujours retourné faux. Puis la vraie expression est sans espace, cela signifie: [#,%]. J'espère que cela vous aidera à l'avenir. (y)
Supprimer des citations de votre REGEXP:
var expression = new RegExp(/^[0-9a-z_]+$/i);
Sortez les citations telles que ceci: nouvelle REGEXP (/ ^ [0-9a-z _] + $ / i); code> p>
@IGOR DYMOV et @MRCHIEFF: Y a-t-il un avantage à utiliser nouvelle Regexp (/ /) code> au lieu de / / code>?
Utilisez SLASH "/" au lieu de citations, au début et à la fin de l'expression régulière. P>
Pour votre code, cela devrait être comme ça - P>
var expression = nouveau regexp (/ ^ [0-9a-z _] + $ / i); code> p>