diff --git a/lib/assertions.js b/lib/assertions.js
index <HASH>..<HASH> 100644
--- a/lib/assertions.js
+++ b/lib/assertions.js
@@ -87,6 +87,7 @@ module.exports = function (expect) {
     });
 
     expect.addAssertion('[not] to match', function (expect, subject, regexp) {
+        subject = String(subject);
         try {
             expect(String(subject).match(regexp), '[not] to be truthy');
         } catch (e) {
diff --git a/test/unexpected.spec.js b/test/unexpected.spec.js
index <HASH>..<HASH> 100644
--- a/test/unexpected.spec.js
+++ b/test/unexpected.spec.js
@@ -751,6 +751,15 @@ describe('unexpected', function () {
                    '\n' +
                    'barfooquuxfoobaz');
         });
+
+        it('does not fail when building a diff and the subject is not a string', function () {
+            expect(function () {
+                expect(123, 'not to match', /^12/);
+            }, 'to throw',
+                   "expected 123 not to match /^12/\n" +
+                   '\n' +
+                   '123');
+        });
     });
 
     describe('contain assertion', function () {
to match: Don't break when attempting to highlight regexp matches in a non-string.