0
votes

Expression régulière à saisir une pièce d'identité à partir de sélecteurs?

Je tente d'extraire l'identifiant d'un élément d'un sélecteur. Par exemple, si j'ai le sélecteur suivant corps .foo #bar Je souhaite extraire le texte #bar . Et pour #foo: survol Je souhaite extraire #foo . J'ai créé une expression régulière qui fonctionne pour tous les cas sauf pour les sélecteurs contenant : , il ne fonctionne donc pas pour mon dernier exemple #foo: survol . Il semble être gourmand et attrape tout texte #foo: survol au lieu de #foo

voir ici pour un exemple de mon problème: https://regex101.com/r/7rk6al/ 2

Pouvez-vous suggérer comment je modifierai mon regex pour atteindre mon objectif de simplement obtenir l'identifiant du sélecteur et non le : plancher partie?


1 commentaires

Sans #foo , il est juste : plancher .


3 Réponses :


0
votes

Ceci est dû à vous à l'aide du . * code> sélecteur pour votre identifiant. Il ne cesse pas de s'arrêter au côlon. Ce que vous pourriez faire est de remplacer ce sélecteur avec un ( [a-za-z0-9 \ -_.] Code>, REF ).

(#[a-zA-Z0-9_\-.]*)(?:[:|\s]{1})


0 commentaires

0
votes

On dirait que cela fonctionne, si quelqu'un connaît une meilleure solution s'il vous plaît faites le moi savoir:

/ (#. *?) (: | \ s) / GMI

https://regex101.com/r/7rk6al/3


1 commentaires

La réponse acceptée n'est pas 100% correcte. Nous pouvons commencer les identifiants avec intergers: jsfiddle.net/bvge2uwd/1 .. Lié: Stackoverflow.com/a/6732899/8620333



1
votes

Un identifiant doit commencer par une lettre et peut être suivi d'un nombre quelconque de lettres, de chiffres, de traits d'union ("-"), de soulignement ("_"), de points (":") et de périodes (".")

Parce que vous ne voulez pas de choses comme :: Après et: survolez, cela fonctionnera aussi bien xxx


1 commentaires

Veuillez noter que la regex est également vraie si le premier caractère de l'ID n'est pas une lettre. Ceci est fait pour gérer certains générateurs qui ne suivent pas les règles W3C. L'ID acceptée par la regex est également accepté par tous les navigateurs.