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. 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',)
      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