Je suis un débutant dans le script java regex. Je dois valider l'un des champs de la page Web de mon projet à l'aide de java script regex. --Le champ ne doit autoriser aucun caractère spécial à l'exception de ("/"). --En outre, le champ ne doit pas "autoriser les mots commençant par" / "ou se terminant par" /".But entre "/" est autorisé. - Également, il existe une restriction qui ne permet pas plus d'une barre oblique consécutive. --- Le champ doit permettre aux caractères uniques de passer également
Fondamentalement, les mots autorisés sont les suivants: -
data
data/sdsd
d/s/s/sss
ceux qui ne permettent pas sont: -
/data
or //data
or data/
or data////
or data/////data
Je pensais de deux regex 1. (^[w]+.*[^/]$)
c'est-à-dire permettre aux mots commençant par un caractère alphanumérique et vérifier également que le mot ne doit pas se terminer par "/
".
Je sais que ce n’est pas une bonne regex (entre les deux, on permettra un nombre multiple de/
"aussi les caractères spéciaux ne sont pas pris en comptede) mais le problème principal avec celui-ci est qu’il rejette un seul caractère, donc, s'il vous plaît, si quelqu'un peut m'aider à modifier cette expression régulière afin de permettre à un seul caractère de le lire, cela vous sera très utile.
[w]+([/][w]+)*
c'est à dire. Je voulais créer une expression rationnelle qui autorisera un nombre quelconque de répétitions de caractères alphanumériques, mais si elle voit une barre oblique, assurez-vous qu'elle est suivie d'un caractère alphanuérique. et j'ai lu sur internet que "()
"est utilisé pour regrouper les personnages alors je pensais([/][w]+)*
agira en tant que groupe qui permettra: -/ s, / sss, / dadada
Et le métacaractère "*
"veillera à ce qu'il se répète autant de fois que nécessaire. Mais le problème, c'est qu'il ne s'agit pas de regrouper [/]
et [w]+
, les autorise plutôt les mots se terminant par "/
" S'il vous plaît, si quelqu'un peut m'aider, cela sera d'une grande aide. Merci d'avance!
Réponses:
4 pour la réponse № 1Ce n’est probablement pas le plus efficace, mais il devrait vous aider à démarrer. Le moteur de regex de Javascript ne prend pas en charge les lookbehind, ce qui le rend un peu plus compliqué.
^([a-z]+([a-z]|/(?![/]))*[a-z]|[a-z])$
Vous voudrez probablement aussi utiliser le modificateur insensible à la casse, donc le résultat (avec /
délimiteurs) ressemble à ceci:
/^([a-z]+([a-z]|/(?![/]))*[a-z]|[a-z])$/i
1 pour la réponse № 2
Je pense que ce sera aider à résoudre votre problème. Le quantificateur paresseux sur le groupe et les références de début et de fin pour aider à ancrer le tout semblent fonctionner.
/^w([//]?w+)*?$/ig
0 pour la réponse № 3
Cela devrait résoudre votre problème:
^(w(([/]?w)*w)?)$
La regexp dit:
Une correspondance doit toujours commencer par un caractère de mot.
S'il y a plus de 1 caractères, le dernier doit également être un caractère-mot.
Tous les chacaters entre les deux sont soit un /
, suivi d'un caractère mot ou d'un seul caractère mot, bref: ([/]?w)*
Ajouter un plus peut vous apporter des améliorations en termes de performances:
^(w(([/]?w+)*w)?)$