2012-04-23 12 views
0

私はこの正規表現を持っている:私は正規表現を渡しChromeで12345Testを入力するとJS-機能異なる正規表現は

function checkSsn(ssn){ 

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

での使用、およびthatsの

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

ポイント。しかし、IEでは文字列は数字で始めることはできません。私の人生を悲惨にするために作られたIEだと私には思えます。どうすればこの問題を解決できますか?

+1

IEは数字を最初に許可しない理由は言うことができませんが、[A-Å]はAからマッチするので[A-Å-å]は[A-å]とまったく同じです。 0x41)からÅ(0xC5)、[a-å]はA(0x61)からå(0xE5)に一致します。そうでなければ小文字のæとøが欠けてしまうので、あなたはおそらく[A-Za-zÆØÅæøå0-9、\!\ - \?\ "\。]を意味します(私はあなたがノルウェー人であると仮定しています)。 –

+0

また、なぜ二重引用符があるのですか? –

+0

二重引用符は、率直に言ってわかりません。 –

答えて

1

あなたの問題があるのに役立ちます建設A-Åa-åは異なって解釈されています。 IEはTがその範囲内にあるとは思わない。

これは、文字セットの検出と関係がある可能性があります。スクリプトはUTF-8でエンコードされていますか?それはUTF-8 BOMから始まりますか?そうでない場合は、おそらく1つを追加すると、少なくともブラウザが同じように動作するようになります。

第2に、A-Åa-åと書くことであなたの意図がわかりませんが、正規表現に入れるのは珍しいことです。

文字をより自然な範囲に分割するよう正規表現を変更することをお勧めします。 A-Za-zÅåに変更するか、または範囲をすべて拡張します。

1

あなたはユニコードシーケンス

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

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

希望を使用してこの正規表現を試してみてくださいnorwegian alphabet(私は仮定)から数字と文字を許可する場合、これは