diff --git a/src/jqLite.js b/src/jqLite.js
index 1b7f638c2bb6..a3ad88f516c0 100644
--- a/src/jqLite.js
+++ b/src/jqLite.js
@@ -142,7 +142,7 @@ function camelCase(name) {
var SINGLE_TAG_REGEXP = /^<(\w+)\s*\/?>(?:<\/\1>|)$/;
var HTML_REGEXP = /<|?\w+;/;
-var TAG_NAME_REGEXP = /<([\w:]+)/;
+var TAG_NAME_REGEXP = /<([\w:-]+)/;
var XHTML_TAG_REGEXP = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi;
var wrapMap = {
diff --git a/test/jqLiteSpec.js b/test/jqLiteSpec.js
index 29848825a41a..20bc04b9a41e 100644
--- a/test/jqLiteSpec.js
+++ b/test/jqLiteSpec.js
@@ -67,6 +67,47 @@ describe('jqLite', function() {
});
+ it('should allow construction of an html element containing dashes', function() {
+ var nodes;
+ nodes = jqLite('');
+ expect(nodes.length).toEqual(1);
+ expect(nodes[0].nodeName).toEqual('MY-FOO');
+
+ nodes = jqLite('');
+ expect(nodes.length).toEqual(1);
+ expect(nodes[0].nodeName).toEqual('MY-FOO');
+ });
+
+
+ it('should allow construction of an html element containing dashes and starting with characters that match existing html elements', function() {
+ var nodes;
+
+ nodes = jqLite('');
+ expect(nodes.length).toEqual(1);
+ expect(nodes[0].nodeName).toEqual('OPTION-FOO');
+
+ nodes = jqLite('');
+ expect(nodes.length).toEqual(1);
+ expect(nodes[0].nodeName).toEqual('THEAD-FOO');
+
+ nodes = jqLite('');
+ expect(nodes.length).toEqual(1);
+ expect(nodes[0].nodeName).toEqual('COL-FOO');
+
+ nodes = jqLite('');
+ expect(nodes.length).toEqual(1);
+ expect(nodes[0].nodeName).toEqual('TR-FOO');
+
+ nodes = jqLite('');
+ expect(nodes.length).toEqual(1);
+ expect(nodes[0].nodeName).toEqual('TD-FOO');
+
+ nodes = jqLite('');
+ expect(nodes.length).toEqual(1);
+ expect(nodes[0].nodeName).toEqual('DIV-FOO');
+ });
+
+
it('should allow construction of html with leading whitespace', function() {
var nodes = jqLite(' \n\r \r\n
1
2');
expect(nodes[0].parentNode).toBeDefined();