4
從我的理解,這字符範圍與字符轉義
/[\d-X]/
不是由標準所允許:
的抽象操作CharacterRange需要兩個字符集參數A和B,並且執行以下操作: 1.如果A不包含一個字符或者B不包含一個字符,則拋出一個SyntaxError異常...(http://es5.github.io/#x15.10.2.15)
然而,一些(?大多數)瀏覽器把-
,如果是前面/後面轉義的順序字符,因此,上述匹配數字,破折號和X:
var re = /[\d-X]/g;
for(var i = 0, r = ""; i < 0x10000; i++) {
var s = String.fromCharCode(i);
if(!s.replace(re, ''))
r += s;
}
console.log(r) // -X
問題:
- 這種行爲在所有引擎中都是可觀察的嗎? (我已經測試過最新的Webkit和Firefox)
- 有沒有任何解釋他們爲什麼決定違反標準(在文檔,來源,郵件列表等)?
是的,這是有道理的。 「範圍規範」這個詞在標準中沒有定義,因此實施者可以自由地在這裏做出自己的決定。 – georg