2012-11-10 26 views
1

我在javascript中製作一個(Excel類似的)數字formater函數。我想要使​​用像「0 000.00」和「000.000.000」這樣的模板:符合'。'的Javascript正則表達式('lookbehind替代方案)

format(123456789,"0 000.00") >> "123 456 789.00" 
format(123456789,"000\.000\.000") >> "123.456.789" 

所以我需要匹配'。'沒有以'\'開頭。由於javascript中沒有後視,分割模板的整個和小數部分的正則表達式是什麼?

這遺憾的是不:-(

template.split(/(?<!\\)\./); 
+2

我不認爲JavaScript正則表達式支持後視功能。 –

回答

3
工作

反轉字符串和使用負前瞻代替。

template.split("").reverse().join("") 
     .split(/\.(?!\\)/) 
     .split("").reverse().join(""); 

這就是做一個「有趣」的方式,但對你的情況還有其他的方法可能會更好一些,比如用__MAGIC__這樣的魔術字符串替換所有的\.,然後拆分.,然後撤消魔術字符串

+0

我第一次從一個名字我不能拼寫的人身上學到了這個技巧,否則我會給他信用:Tim P. –