Test avant/arriere en regexp JavaScript

devMan Messages postés 75 Statut Membre -  
devMan Messages postés 75 Statut Membre -
Bonjour,
j'ai essauyé d'utiliser:
(?=X) positive lookahead
(?!X) negative lookahead
(?<=X) positive lookbehind
(?<!X) negative lookbehind


var regex = new RegExp("(?<=\()[1-9](?=(and|or))", "g");


mais j'ai un erreur :

invalid quantifier ?<=()[1-9](?=(and|or))

Y'at-il quelqu'un peut me dire pourquoi ??

merci d'avance
Configuration: Linux
Firefox 3.5.7

3 réponses

  1. devMan Messages postés 75 Statut Membre 15
     
    il me semble que les regxp JavaScript ne support pas les look-behinds (test en arriere)
    3
  2. heyquem Messages postés 808 Statut Membre 131
     
    Bonjour,

    Il faut faire des tests pour bien saisir quelles sont les possibilités, car les docus sont insuffisantes pour bien comprendre.

    Par exemple:

    var regex = new RegExp("(?<=\()[1-9]", "g");
    appliqué à
    'fdd(8jjj’
    produit elle un objet Match ?

    var regex = new RegExp("[1-9](?=and)", "g");
    appliqué à
    'aaaaa7and jjj’
    produit elle un objet Match ?

    Tu sauras alors si les look ahead et behind assertions sont supportées par JavaScript

    Je viens par exemple de découvrir qu’en Python, un groupe peut être défini dans une look-ahead assertion, quoique la docu dise le contraire.

    Ainsi

    ch = 'wdcwd8andhgu'
    print re.search("[1-9](?=(and|or))",ch).groups()
    
    ch = 'wdcwd8orhgu'
    print re.search("[1-9](?=(and|or))",ch).groups()

    donne
    ('and',)
    ('or',)
    0
  3. devMan Messages postés 75 Statut Membre 15
     
    Re,
    merci de votre reponse,
    en fait j'ai une zone de text ds laquelle l'utilisateur peut saisi des chaine de caracteres:
    a condition que les valeurs permise sont : chiffres, and, or, parenthese.
    et

    - chaque chiffre est suivi soit :
    * - or ou and
    * - )
    * - rien (fin de la chaine)
    et precédé (le chiffre) par :
    * - or ou and
    * - (
    * - rien (fin de la chaine)

    merci de m'aider
    0