diff --git a/mode/clojure/clojure.js b/mode/clojure/clojure.js
index d0268a78d61093689d1c73a8401dfa2f45827e49..ce389927db339cc1bd325cc3bf1558589353b04c 100644
--- a/mode/clojure/clojure.js
+++ b/mode/clojure/clojure.js
@@ -40,9 +40,9 @@ CodeMirror.defineMode("clojure", function (config, mode) {
     var tests = {
         digit: /\d/,
         digit_or_colon: /[\d:]/,
-        hex: /[0-9a-fA-F]/,
+        hex: /[0-9a-f]/i,
         sign: /[+-]/,
-        exponent: /[eE]/,
+        exponent: /e/i,
         keyword_char: /[^\s\(\[\;\)\]]/,
         basic: /[\w\$_\-]/,
         lang_keyword: /[\w*+!\-_?:\/]/
@@ -64,8 +64,7 @@ CodeMirror.defineMode("clojure", function (config, mode) {
 
     function isNumber(ch, stream){
         // hex
-        if ( ch === '0' && 'x' == stream.peek().toLowerCase() ) {
-            stream.eat('x');
+        if ( ch === '0' && stream.eat(/x/i) ) {
             stream.eatWhile(tests.hex);
             return true;
         }
@@ -85,8 +84,7 @@ CodeMirror.defineMode("clojure", function (config, mode) {
                 stream.eatWhile(tests.digit);
             }
 
-            if ( 'e' == stream.peek().toLowerCase() ) {
-                stream.eat(tests.exponent);
+            if ( stream.eat(tests.exponent) ) {
                 stream.eat(tests.sign);
                 stream.eatWhile(tests.digit);
             }