2017-07-15 71 views
2

其他人看到代码https://jsfiddle.net/1rgknpwq/分别插入下面返回true与Edge?对我来说,它具有Microsoft Edge 40.15063.0.0。为什么Edge为/^.+<?xml/i.test('<?xml version =“1.0”?><root/>')返回true是否有任何理由?

var xml = '<?xml version="1.0"?><root/>'; 
 
var regex = /^.+<\?xml/i; 
 
var test = regex.test(xml); 
 
var result = 'Checking ' + regex + ".test('" + xml + "'): " + test; 
 
console.log(result); 
 
document.getElementById('result').textContent = result;
<section> 
 
<h2>Test</h2> 
 
<pre id="result"></pre> 
 
</section>

似乎是一个错误,不是吗?

这里是进一步降低它的企图,基于注释:

var str = '<'; 
 
var regex = /^.</i; 
 
var test = regex.test(str); 
 
var result = 'Checking ' + regex + ".test('" + str + "'): " + test; 
 
console.log(result); 
 
document.getElementById('result').textContent = result;
<section> 
 
<h2>Test</h2> 
 
<pre id="result"></pre> 
 
</section>

对于减少的情况下,边缘给出正确的结果false,如IE,Chrome浏览器,Firefox浏览器。尽管如此,第一个代码片段让我对Chrome,Firefox,IE,而不是引用的Edge版本为假。

最小测试用例与所引用的边缘版本表现出的问题是https://jsfiddle.net/vx9dz8cw/,它也检查在输入第一个字符是小于签署<,以便有之前没有不可见字符:

var xml = '<?'; 
 
var regex = /^.+<\?/i; 
 
var test = regex.test(xml); 
 
var result = 'Checking ' + regex + ".test('" + xml + "') with xml.charAt(0) being '" + xml.charAt(0) + "': " + test; 
 
console.log(result); 
 
document.getElementById('result').textContent = result;
<section> 
 
<h2>Test</h2> 
 
<pre id="result"></pre> 
 
</section>

如果我们删除从所述输入和正则表达式模式则代码(https://jsfiddle.net/vx9dz8cw/1/)问号正常工作:

var xml = '<'; 
 
var regex = /^.+</i; 
 
var test = regex.test(xml); 
 
var result = 'Checking ' + regex + ".test('" + xml + "') with xml.charAt(0) being '" + xml.charAt(0) + "': " + test; 
 
console.log(result); 
 
document.getElementById('result').textContent = result;
<section> 
 
<h2>Test</h2> 
 
<pre id="result"></pre> 
 
</section>

+1

我的猜测是测试字符串在'<之前包含一个字符。将它缩小为raw:'if(/^. sln

+0

Edge 38.14393.1066.0即使在小提琴中也会返回false –

+0

如果减少case不会显示意外的行为,这不是一种情况,对于这个问题无关紧要,请尽量减少正则表达式和输入字符串,以使其仍然表现出行为 – Bergi

回答

0

我报告的问题为https://github.com/Microsoft/ChakraCore/issues/3366对微软ChakraCore的Javascript引擎,边使用,它原来是一个已知的bug与已经实施的fix,现在也被包含在最新的独立发布该引擎的ChakraCore 1.6,因此应该进入未来的Edge发行版。

相关问题