diff --git a/README b/README
--- a/README
+++ b/README
@@ -35,6 +35,9 @@
 
 Changes
 
+0.5.4 Fixed bug where lexer switches to regexp mode after a ']'
+      char, reported by @aszlig
+
 0.5.3 Merge pull requests from @aszlig to add octal support, and to
       allow leading zeros in exponents
 
diff --git a/language-javascript.cabal b/language-javascript.cabal
--- a/language-javascript.cabal
+++ b/language-javascript.cabal
@@ -1,5 +1,5 @@
 Name:                language-javascript
-Version:             0.5.3
+Version:             0.5.4
 Synopsis:            Parser for JavaScript
 Description:         Parses Javascript into an Abstract Syntax Tree (AST).  Initially intended as frontend to hjsmin.
                      .
diff --git a/runalex.sh b/runalex.sh
--- a/runalex.sh
+++ b/runalex.sh
@@ -5,5 +5,7 @@
 # to have alex > 3.0 installed
 
 alex -g -o src/Language/JavaScript/Parser/Lexer.hs src-dev/Language/JavaScript/Parser/Lexer.x
+# To debug the lexer
+#alex -d -g -o src/Language/JavaScript/Parser/Lexer.hs src-dev/Language/JavaScript/Parser/Lexer.x
 
 
diff --git a/runtests.hs b/runtests.hs
--- a/runtests.hs
+++ b/runtests.hs
@@ -338,6 +338,8 @@
    , testCase "issue5ok3" (testProg "{ y: 18 }" "Right (JSSourceElementsTop [JSBlock ([JSLabelled (JSIdentifier \"y\") (JSExpression [JSDecimal \"18\"])]),JSLiteral \"\"])")
    , testCase "issue5ok4" (testProg "x = { y: 18 }" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"=\",JSObjectLiteral [JSPropertyNameandValue (JSIdentifier \"y\") [JSDecimal \"18\"]]],JSLiteral \"\"])")
 
+     -- https://github.com/alanz/language-javascript/issues/14
+   , testCase "issue14" (testProg "var z = x[i] / y;" "Right (JSSourceElementsTop [JSVariables JSLiteral \"var\" [JSVarDecl (JSIdentifier \"z\") [JSLiteral \"=\",JSExpressionBinary \"/\" [JSMemberSquare [JSIdentifier \"x\"] (JSExpression [JSIdentifier \"i\"])] [JSIdentifier \"y\"]]],JSLiteral \"\"])")
 
     ]
 
@@ -728,6 +730,9 @@
 
    -- Parse failure in hjsmin
    , testCase "parsefail" (testRoundTrip "switch(t){case DIV:         v = u / v; break;}")
+
+   -- https://github.com/alanz/language-javascript/issues/14
+   , testCase "issue14" (testRoundTrip "var z = x[i] / y;")
     ]
 
 -- ---------------------------------------------------------------------
diff --git a/src-dev/Language/JavaScript/Parser/Lexer.x b/src-dev/Language/JavaScript/Parser/Lexer.x
--- a/src-dev/Language/JavaScript/Parser/Lexer.x
+++ b/src-dev/Language/JavaScript/Parser/Lexer.x
@@ -174,13 +174,10 @@
 <0> () ; -- { registerStates lexToken reg divide }
 
 -- Skip Whitespace
--- <reg,divide> $white_char+   ;
 <reg,divide> $white_char+   { adapt (mkString wsToken) }
 
 -- Skip one line comment
--- <reg,divide> "//"($not_eol_char)*   ;
 <reg,divide> "//"($not_eol_char)*   { adapt (mkString commentToken) }
--- <reg,divide> "//"($not_eol_char)*   { mkComment }
 
 -- ---------------------------------------------------------------------
 -- Comment definition from the ECMAScript spec, ver 3
@@ -270,8 +267,9 @@
     }
 
 <reg,divide> {
-      \;	{ adapt (symbolToken  SemiColonToken)}
-      ","	{ adapt (symbolToken  CommaToken)}
+   --   \;	{ adapt (symbolToken  SemiColonToken)}
+     ";"	{ adapt (symbolToken  SemiColonToken)}
+     ","	{ adapt (symbolToken  CommaToken)}
      "?"	{ adapt (symbolToken  HookToken)}
      ":"	{ adapt (symbolToken  ColonToken)}
      "||"	{ adapt (symbolToken  OrToken)}
@@ -327,18 +325,19 @@
 classifyToken :: Token -> Int
 classifyToken aToken =
    case aToken of
-      IdentifierToken {} -> divide
-      NullToken {}       -> divide
-      TrueToken {}       -> divide
-      FalseToken {}      -> divide
-      ThisToken {}       -> divide
-      OctalToken {}      -> divide
-      DecimalToken {}    -> divide
-      HexIntegerToken {} -> divide
-      StringToken {}     -> divide
-      RightCurlyToken {} -> divide
-      RightParenToken {} -> divide
-      _other             -> reg
+      IdentifierToken {}   -> divide
+      NullToken {}         -> divide
+      TrueToken {}         -> divide
+      FalseToken {}        -> divide
+      ThisToken {}         -> divide
+      OctalToken {}        -> divide
+      DecimalToken {}      -> divide
+      HexIntegerToken {}   -> divide
+      StringToken {}       -> divide
+      RightCurlyToken {}   -> divide
+      RightParenToken {}   -> divide
+      RightBracketToken {} -> divide
+      _other               -> reg
 
 
 {-
diff --git a/src/Language/JavaScript/Parser/Lexer.hs b/src/Language/JavaScript/Parser/Lexer.hs
--- a/src/Language/JavaScript/Parser/Lexer.hs
+++ b/src/Language/JavaScript/Parser/Lexer.hs
@@ -275,7 +275,7 @@
 alex_deflt = AlexA# "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8e\x01\xff\xff\x8c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x69\x00\x6b\x00\x6b\x00\x6d\x00\x6d\x00\xff\xff\x73\x00\x73\x00\x7a\x00\x7a\x00\x7e\x00\x7e\x00\x82\x00\x82\x00\xff\xff\xff\xff\x8c\x00\x8c\x00\x8c\x00\x8e\x00\x8e\x00\xff\xff\x3e\x00\xff\xff\x3e\x00\x3e\x00\x3c\x00\xff\xff\x3c\x00\x3c\x00\x9a\x00\xff\xff\x9a\x00\x9a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8c\x00\x82\x01\x82\x01\x82\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8e\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8c\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"#
 
 alex_accept = listArray (0::Int,447) [[(AlexAccSkip)],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[(AlexAcc (alex_action_1))],[(AlexAcc (alex_action_2))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_4))],[(AlexAcc (alex_action_5))],[(AlexAcc (alex_action_6))],[(AlexAcc (alex_action_7))],[(AlexAcc (alex_action_8))],[(AlexAcc (alex_action_9))],[(AlexAcc (alex_action_9))],[(AlexAcc (alex_action_9))],[(AlexAcc (alex_action_9))],[(AlexAccSkip)],[(AlexAcc (alex_action_11))],[(AlexAcc (alex_action_12))],[(AlexAcc (alex_action_13))],[(AlexAcc (alex_action_14))],[(AlexAcc (alex_action_15))],[(AlexAcc (alex_action_16))],[(AlexAcc (alex_action_17))],[(AlexAcc (alex_action_18))],[(AlexAcc (alex_action_19))],[(AlexAcc (alex_action_20))],[(AlexAcc (alex_action_21))],[(AlexAcc (alex_action_22))],[(AlexAcc (alex_action_23))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_25))],[(AlexAcc (alex_action_26))],[(AlexAcc (alex_action_27))],[(AlexAcc (alex_action_28))],[(AlexAcc (alex_action_29))],[(AlexAcc (alex_action_30))],[(AlexAcc (alex_action_31))],[(AlexAcc (alex_action_32))],[(AlexAcc (alex_action_33))],[(AlexAcc (alex_action_34))],[(AlexAcc (alex_action_35))],[(AlexAcc (alex_action_36))],[(AlexAcc (alex_action_37))],[(AlexAcc (alex_action_38))],[(AlexAcc (alex_action_39))],[(AlexAcc (alex_action_40))],[(AlexAcc (alex_action_41))],[(AlexAcc (alex_action_42))],[(AlexAcc (alex_action_43))],[(AlexAcc (alex_action_44))],[(AlexAcc (alex_action_45))],[(AlexAcc (alex_action_46))],[(AlexAcc (alex_action_47))],[(AlexAcc (alex_action_48))],[(AlexAcc (alex_action_49))],[(AlexAcc (alex_action_50))]]
-{-# LINE 318 "src-dev/Language/JavaScript/Parser/Lexer.x" #-}
+{-# LINE 316 "src-dev/Language/JavaScript/Parser/Lexer.x" #-}
 
 
 {-
@@ -288,18 +288,19 @@
 classifyToken :: Token -> Int
 classifyToken aToken =
    case aToken of
-      IdentifierToken {} -> divide
-      NullToken {}       -> divide
-      TrueToken {}       -> divide
-      FalseToken {}      -> divide
-      ThisToken {}       -> divide
-      OctalToken {}      -> divide
-      DecimalToken {}    -> divide
-      HexIntegerToken {} -> divide
-      StringToken {}     -> divide
-      RightCurlyToken {} -> divide
-      RightParenToken {} -> divide
-      _other             -> reg
+      IdentifierToken {}   -> divide
+      NullToken {}         -> divide
+      TrueToken {}         -> divide
+      FalseToken {}        -> divide
+      ThisToken {}         -> divide
+      OctalToken {}        -> divide
+      DecimalToken {}      -> divide
+      HexIntegerToken {}   -> divide
+      StringToken {}       -> divide
+      RightCurlyToken {}   -> divide
+      RightParenToken {}   -> divide
+      RightBracketToken {} -> divide
+      _other               -> reg
 
 
 {-
