2017-07-15 72 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發行版。

相關問題