diff --git a/modules/PathUtils.js b/modules/PathUtils.js
index f911d96001..82f37c0cf3 100644
--- a/modules/PathUtils.js
+++ b/modules/PathUtils.js
@@ -5,7 +5,7 @@ var qs = require('qs');
var paramCompileMatcher = /:([a-zA-Z_$][a-zA-Z0-9_$]*)|[*.()\[\]\\+|{}^$]/g;
var paramInjectMatcher = /:([a-zA-Z_$][a-zA-Z0-9_$?]*[?]?)|[*]/g;
var paramInjectTrailingSlashMatcher = /\/\/\?|\/\?\/|\/\?/g;
-var queryMatcher = /\?(.+)/;
+var queryMatcher = /\?(.*)$/;
var _compiledPatterns = {};
diff --git a/modules/__tests__/Router-test.js b/modules/__tests__/Router-test.js
index 4465af305b..daac5f55bb 100644
--- a/modules/__tests__/Router-test.js
+++ b/modules/__tests__/Router-test.js
@@ -648,6 +648,15 @@ describe('Router', function () {
});
});
+ it('renders with empty query string', function (done) {
+ var routes = ;
+ Router.run(routes, '/?', function (Handler, state) {
+ var html = React.renderToString();
+ expect(html).toMatch(/Foo/);
+ done();
+ });
+ });
+
it('executes transition hooks when only the query changes', function (done) {
var fromKnifeCalled = false;
var fromSpoonCalled = false;