/ / Regroupement des expressions rationnelles dans les scripts Java - javascript, regex

Regroupement des expressions rationnelles en script Java - javascript, regex

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.

  1. [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 № 1

Ce 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])$

http://regex101.com/r/iA9kC6

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)?)$