2012-07-18 182 views
1

我想我想要做的事情是可能的......但我還沒有找到一個答案,實現了這一點呢。 我想格式化,這將是在javascript類似這樣的字符串:正則表達式 - 刪除第二個空格

+44 (0) 234-567-8901

的進行國際(+44)和地方((0))調用代碼有可能發生變化,因此字符串可能會更長或更短。但是格式總是一樣的。

我想取這個字符串並刪除所有字符,包括空格到第二個空格並刪除破折號。 e.g:

+44 (0) 234-567-8901 becomes 2345678901

誰能幫助?

感謝

+0

[你有什麼嘗試?](http://whathaveyoutried.com) – JaredMcAteer 2012-07-18 15:03:24

+0

看看'indexOf'(https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/indexOf)和(http://stackoverflow.com/questions/1144783/replacing-all-occurrences-of-a-string-in-javascript – 2012-07-18 15:03:35

+0

這是最接近我有'^ [^ \)] +(?= \) )''使用上面的例子返回'+ 4402345678901' – user1535196 2012-07-18 15:09:52

回答

1

通過自己的要求去(除去一切直至幷包括第二空白,並從剩餘刪除破折號);

使用此模式^([\S]+\s){2}|-並用什麼都替換。你應該留下一個類似於你所要求的號碼(+44 (0) 234-567-8901變成2345678901)。

+0

完美!感謝大家 – user1535196 2012-07-18 15:41:50

0

如果你可以依靠的字符串的結束格式是字符數一致,你可以抓住最後的12個字符,並刪除破折號。

var result = str.slice(-12).replace(/-/g, ""); 

如果你真的只想要一個正則表達式,你可以做到這一點...

var result = str.match(/(\d{3})-(\d{3})-(\d{4})$/).slice(1).join(""); 

再次,這依賴於字符串結尾的一致性。如果可能有變化,您需要進行調整以進行補償。


得到一切的最後一個空白後,在第一個例子,這個改變slice() ...

.slice(str.lastIndexOf(' ') + 1) 

到第二空白後得到的一切,改變slice()這...

.slice(str.indexOf(' ', str.indexOf(' ') + 1) + 1) 
+0

對於大多數情況下,我可以依靠最後12個字符,因爲這些將是英國號碼,但是會有一些國際號碼,所以它不是一個完整的解決方案。有沒有辦法搜索空白號碼並刪除所有內容? – user1535196 2012-07-18 15:23:24

+0

@ user1535196:如果你想要在* last *空格之後的所有內容,請執行此操作...'str.slice(str.lastIndexOf('')+ 1)' – 2012-07-18 15:25:56

相關問題