Allow all characters (except astral) specified in XML specs. fixes #2329
Dmitriy Rozhkov committed
Oct 19, 2015 at 23:36 UTC
a2b471e09850f1546fd2526149fc04992cb85b80
3 files changed
+7
-3
src/renderers/dom/shared/DOMProperty.js
+5
@@ -151,6 +151,8 @@ var DOMPropertyInjection = {
151
};
152
var defaultValueCache = {};
153
154
+var ATTRIBUTE_NAME_START_CHAR = ':A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD';
155
+
156
/**
157
* DOMProperty exports lookup objects that can be used like functions:
158
*
@@ -168,6 +170,9 @@ var DOMProperty = {
170
171
ID_ATTRIBUTE_NAME: 'data-reactid',
172
173
+ ATTRIBUTE_NAME_START_CHAR: ATTRIBUTE_NAME_START_CHAR,
174
+ ATTRIBUTE_NAME_CHAR: ATTRIBUTE_NAME_START_CHAR + '\\-.0-9\\uB7\\u0300-\\u036F\\u203F-\\u2040',
175
+
176
/**
177
* Map from property "standard name" to an object with info about how to set
178
* the property in the DOM. Each object contains:
src/renderers/dom/shared/DOMPropertyOperations.js
+1
-2
@@ -18,8 +18,7 @@ var ReactPerf = require('ReactPerf');
18
var quoteAttributeValueForBrowser = require('quoteAttributeValueForBrowser');
19
var warning = require('warning');
20
21
-// Simplified subset
22
-var VALID_ATTRIBUTE_NAME_REGEX = /^[a-zA-Z_][\w\.\-]*$/;
21
+var VALID_ATTRIBUTE_NAME_REGEX = new RegExp('^[' + DOMProperty.ATTRIBUTE_NAME_START_CHAR + '][' + DOMProperty.ATTRIBUTE_NAME_CHAR + ']*$');
22
var illegalAttributeNameCache = {};
23
var validatedAttributeNameCache = {};
24
src/renderers/dom/shared/HTMLDOMPropertyConfig.js
+1
-1
@@ -39,7 +39,7 @@ if (ExecutionEnvironment.canUseDOM) {
39
40
var HTMLDOMPropertyConfig = {
41
isCustomAttribute: RegExp.prototype.test.bind(
42
- /^(data|aria)-[a-z_][a-z\d_.\-]*$/
42
+ new RegExp('^(data|aria)-[' + DOMProperty.ATTRIBUTE_NAME_CHAR + ']*$')
43
),
44
Properties: {
45
/**