diff --git a/.travis.yml b/.travis.yml
index c19fa52d6..cf4351c55 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,6 +1,6 @@
language: node_js
node_js:
- - "4.2.1"
+ - "4.2.2"
sudo: false
before_install:
- export WAPPALYZER_ROOT=$TRAVIS_BUILD_DIR
diff --git a/bin/wappalyzer-validate b/bin/wappalyzer-validate
index a15d5d3c3..a6e8c691e 100755
--- a/bin/wappalyzer-validate
+++ b/bin/wappalyzer-validate
@@ -29,9 +29,9 @@ echo "Validating apps.json..."
jsonlint --quiet -V $WAPPALYZER_ROOT/schema.json $path/apps.json
-# echo "Validating regular expressions..."
-#
-# wappalyzer validate-regex
+echo "Validating regular expressions..."
+
+wappalyzer validate-regex
echo "Validating icons..."
diff --git a/src/apps.json b/src/apps.json
index c25089b49..1e3735874 100755
--- a/src/apps.json
+++ b/src/apps.json
@@ -131,7 +131,7 @@
6
],
"headers": {
- "OracleCommerceCloud-Version": ".*\\;version:\\1"
+ "OracleCommerceCloud-Version": "(.*)\\;version:\\1"
},
"html": "<[^>]+id=\"oracle-cc\"",
"website": "cloud.oracle.com/commerce-cloud",
@@ -421,7 +421,7 @@
"env": "^angular$",
"script": [
"angular(?:\\-|\\.)([\\d.]*\\d)[^/]*\\.js\\;version:\\1",
- "/([\\d.]+(\\-?rc[.\\d]*)*)/angular(\\.min)?\\.js\\;version:\\1",
+ "/([\\d.]+(?:\\-?rc[.\\d]*)*)/angular(?:\\.min)?\\.js\\;version:\\1",
"angular.*\\.js"
],
"website": "angularjs.org",
@@ -606,7 +606,7 @@
13
],
"env": "^jira$",
- "html": "Powered by\\s+]+atlassian\\.com/(?:software/jira|jira-bug-tracking/)[^>]+>Atlassian\\s+JIRA(?:[^v]*v(?:ersion: )?(\\d+\\.\\d+(\\.\\d+)?))?\\;version:\\1",
+ "html": "Powered by\\s+]+atlassian\\.com/(?:software/jira|jira-bug-tracking/)[^>]+>Atlassian\\s+JIRA(?:[^v]*v(?:ersion: )?(\\d+\\.\\d+(?:\\.\\d+)?))?\\;version:\\1",
"implies": "Java",
"meta": {
"ajs-version-number": "([\\d\\.]+)\\;version:\\1",
@@ -795,7 +795,7 @@
12
],
"implies": "Google Analytics",
- "script": "boba(\\.min)?\\.js",
+ "script": "boba(?:\\.min)?\\.js",
"website": "boba.space150.com",
"icon": "Boba.js.png"
},
@@ -1830,7 +1830,7 @@
"cats": [
36
],
- "script": "googletagservices\\.com/tag/js/gpt(_mobile|)\\.js",
+ "script": "googletagservices\\.com/tag/js/gpt(?:_mobile)?\\.js",
"website": "www.google.com/dfp",
"icon": "DoubleClick for Publishers (DFP).png"
},
@@ -2078,7 +2078,7 @@
],
"html": "]+?href=\"[^\"]+epoch(?:\\.min)?\\.css",
"implies": "D3",
- "script": "epoch(\\.min)?\\.js",
+ "script": "epoch(?:\\.min)?\\.js",
"website": "fastly.github.io/epoch",
"icon": "Epoch.png"
},
@@ -2096,7 +2096,7 @@
27
],
"headers": {
- "Server": "Erlang( OTP/([\\-\\d\\.ABR]+))?\\;version:\\1"
+ "Server": "Erlang( OTP/(?:[\\-\\d\\.ABR]+))?\\;version:\\1"
},
"website": "www.erlang.org",
"icon": "Erlang.png"
@@ -2816,7 +2816,7 @@
12
],
"env": "^Hammer$",
- "script": "hammer(\\.min)?\\.js",
+ "script": "hammer(?:\\.min)?\\.js",
"website": "hammerjs.github.io",
"icon": "Hammer.js.png"
},
@@ -2920,7 +2920,7 @@
"env": "^Hogan$",
"script": [
"hogan-(?:-|\\.)([\\d.]*\\d)[^/]*\\.js\\;version:\\1",
- "([\\d.]+)/hogan(\\.min)?\\.js\\;version:\\1"
+ "([\\d.]+)/hogan(?:\\.min)?\\.js\\;version:\\1"
],
"website": "twitter.github.com/hogan.js",
"icon": "Hogan.js.png"
@@ -3653,7 +3653,7 @@
"cats": [
12
],
- "script": "lazy(\\.browser)?(\\.min)?\\.js",
+ "script": "lazy(?:\\.browser)?(?:\\.min)?\\.js",
"website": "danieltao.com/lazy.js",
"icon": "Lazy.js.png"
},
@@ -4237,7 +4237,7 @@
1,
6
],
- "html": "(