Test avant/arriere en regexp JavaScript

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. il me semble que les regxp JavaScript ne support pas les look-behinds (test en arriere)
    1. 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
      1. 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',)