我有以下代码集
var nameStartChar = /[A-Z_a-z\xC0-\xD6\xD8-\xF6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]///\u10000-\uEFFFF
var nameChar = new RegExp("[\\-\\.0-9"+nameStartChar.source.slice(1,-1)+"\u00B7\u0300-\u036F\\ux203F-\u2040]");
var tagNamePattern = new RegExp('^'+nameStartChar.source+nameChar.source+'*(?:\:'+nameStartChar.source+nameChar.source+'*)?$');
它引发以下错误:
sqmtest I/JS: SyntaxError: Invalid regular expression: /[\-\.0-9A-Z_a-z\xC0-\xD6\xD8-\xF6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD????-??\ux203F-???]/: Range out of order in character class
at new RegExp (<anonymous>)
at RegExp (<anonymous>)
at Object.$$_sax (http://com.hashcube.sqtest/modules/devkit-core/src/clientapi/native/dom/sax.js:1:5952)
at I (none:615:5092)
at z (none:615:6690)
at Object.jsio (none:615:7357)
at Object.$$_dom_parser (http://com.hashcube.sqtest/modules/devkit-core/src/clientapi/native/dom/dom_parser.js:1:3511)
at I (none:615:5092)
at z (none:615:6690)
at Object.jsio (none:615:7357)
at Object.$$_dom_DOMParser (http://com.hashcube.sqtest/modules/devkit-core/src/clientapi/native/dom/DOMParser.js:1:66)
at I (none:615:5092)
at z (none:615:6690)
at Object.jsio (none:615:7357)
at Object.$$_common.exports.install (http://com.hashcube.sqtest/modules/devkit-core/src/clientapi
完整代码在这里-> https://github.com/hashcube/devkit-core/blob/hc/src/clientapi/native/dom/sax.js
任何想法,为什么正则表达式可能会失败。 我尚未证实这一点,但看起来缩小可能会引起问题。
任何想法建议都会对我有所帮助。如果需要,我可以提供更多详细信息
编辑
我有更多信息。我在两台机器上查看了这两行的代码最小化(一台机器我收到此错误,另一台我没有收到错误)。对我来说,这似乎是一个编码问题。任何帮助将不胜感激
有错误的机器
var nameStartChar=/[A-Z_a-z\\xC0-\\xD6\\xD8-\\xF6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/,
nameChar=RegExp("[\\\\-\\\\.0-9"+nameStartChar.source.slice(1,-1)+"????-??\\\\ux203F-???]"),
tagNamePattern=RegExp("^"+nameStartChar.source+nameChar.source+"*(?::"+nameStartChar.source+nameChar.source+"*)?$"),S_TAG=0,S_ATTR=1,S_ATTR_S=2,S_EQ=3,S_V=4,S_E=5,S_S=6,S_C=7;
没有错误的机器
var nameStartChar=/[A-Z_a-z\\xC0-\\xD6\\xD8-\\xF6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/,
nameChar=RegExp("[\\\\-\\\\.0-9"+nameStartChar.source.slice(1,-1)+"·�~@-ͯ\\\\ux203F-�~A~@]"),]"),A~@
tagNamePattern=RegExp("^0-9"+nameStartChar.sou+nameChar.source+"*(?::"+nameStartChar.source+nameChar.source+"*)?$"),S_TAG=0,S_ATTR=1,S_ATTR_S=2,S_EEouQ=3,S_V=4,S_E=5,S_S=6,S_C=7;
答案 0 :(得分:0)
好像您提供的范围不是正则表达式的范围;
????-??\\\\ux203F-??? => ????-??\\ux203F-???
\\ux203F-???
这不是正则表达式的范围,会引起问题。休息似乎是正确的。
正则表达式接受此·�~@-ͯ\\\\ux203F-�~A~@
,如果适合您,则可以使用它。
选中Character ranges链接,这可能有助于您重组正则表达式。
PS:“机器没有错误”返回“意外令牌]”