2012-04-23 37 views
0

我有這樣的正則表達式:不同的正則表達式

var RE_SSN = /^[A-Åa-å0-9,\!\-\?\""\. ]{3,999}$/; 

這是我在一個JS-功能

function checkSsn(ssn){ 

if (RE_SSN.test(ssn)) {  
    javascript:addAppointment(document.forms[0]) 
    alert("YES"); 
} else { 
    alert("NO"); 
} 
} 

使用當我在Chrome中的正則表達式通過鍵入12345Test,和多數民衆贊成在點。但在IE中,字符串不能以數字開頭。在我看來,IE只是爲了讓我的生活苦不堪言。如何解決這個問題?

如果你想允許(我想)數字和字母
+1

我不能說爲什麼IE在開始時不允許數字,但只是一個評論:[A-Åa-å]與[A-å]完全相同,因爲[A-Å]與A 0x41)至Å(0xC5),[a-å]與A(0x61)至å(0xE5)匹配。你可能是指[A-Za-zÆØÅæøå0-9,\!\ - \?\「\。],否則,你會錯過小寫字母æ和ø。(我假設你是挪威語)。 – 2012-04-23 12:19:41

+0

另外,爲什麼有雙雙引號? – 2012-04-23 12:20:13

+0

雙雙引號,坦白說我不知道​​。無論如何感謝評論:) – 2012-04-23 12:21:33

回答

1

你的問題是建設A-Åa-å這是不同的解釋。 IE不認爲T在這個範圍內。

這可能與字符集檢測有關。腳本是以UTF-8編碼的嗎?它是否以UTF-8 BOM開始?如果沒有,那麼添加一個可能會有所幫助 - 至少通過使瀏覽器表現相同。

其次,我不確定你的意圖是通過編寫A-Åa-å,但它似乎是一個不尋常的事情,把一個正則表達式。

我建議你改變正則表達式以將字符分解爲更自然的範圍,例如,到A-Za-zÅå,或者完全擴展範圍。

1

norwegian alphabet嘗試這個正則表達式中使用Unicode序列

var RE_SSN = /^[a-zA-Z\u00C5\u00C6\u00D8\u00E5\u00E6\u00F8\!\-\?\""\. ]{3,999}$/; 

其中

\u00C5 > Å 
\u00C6 > Æ 
\u00D8 > Ø 
\u00E5 > å 
\u00E6 > æ 
\u00F8 > ø 

希望這有助於