我有一個字符串,並希望用雙引號包裝非數字(如果他們沒有它們)。用正則表達式檢測非數字的最佳方法是什麼?正則表達式來標識一個非數字字符串
這些是數字:123.43,13827.這些是非數字:你好,2011-02-45,20a,A23。
這是我現在使用的正則表達式,但不處理非數字以數字開頭的情況(所以2011-02-45沒有被拾取)。
我有一個字符串,並希望用雙引號包裝非數字(如果他們沒有它們)。用正則表達式檢測非數字的最佳方法是什麼?正則表達式來標識一個非數字字符串
這些是數字:123.43,13827.這些是非數字:你好,2011-02-45,20a,A23。
這是我現在使用的正則表達式,但不處理非數字以數字開頭的情況(所以2011-02-45沒有被拾取)。
如何:
function isNumber(n) {
return !isNaN(parseFloat(n)) && isFinite(n);
}
這不是一個正則表達式。我想用一個替換字符串來包裝任何非數字。對不起,如果不明確。 – 2011-12-22 15:06:13
@MartinDrapeau你錯了!這個軟件非常有用!你可以在if語句中使用它,並且如果它返回'FALSE',就像這樣包圍引號:'if(!isNumber(x)){x =''''+ x +'「'; }' – 2011-12-22 15:18:50
@Martin:allessioalex在說「你不需要一個正則表達式」,他是絕對正確的。爲什麼讓你的代碼不必要地複雜(並且是不完整的 - 因爲他的函數調用可以捕獲*所有的情況)? – Ether 2011-12-22 20:54:02
你可以做這樣的事情,這是一個很大的速度比正則表達式!
str = +str||false;
海峽= 123.4或者假的時候不是一個數字
這是強制轉換 「STR」 變成實數或者把它作爲一個字符串,你可以..
str = +str||str||false;
到請進行下一步,您可以檢查您的輸出:
if(typeof(str)=='string'){
//str is a string
}
我通過閱讀另一個問題找到了解決方案。這是它: str.replace(/(['"])?([a-zA-Z0-9_\-]*[a-zA-Z_\-]+[a-zA-Z0-9_\-]*)(['"])?/g, '"$2"');
訣竅是確保在比賽中有一個非數字。
考慮到「你好,2011-02-45,20a,A23」的輸入,你期望輸出爲「Hello,2011-02-45,20」a「,」A「23.?或者我誤解了?此外,如果這是正確的,「你好,2011-02-45,20abc,A23.'應該發生什麼?也許'你好,2011-02-45,20「abc」,「A」23.' – 2011-12-22 15:05:00
鑑於此:'今天是2011年12月22日至2011年3月'。 YOu會得到這樣的結果:'「今天」是「2011」的「2011-12-22」「」第3「」日「」。所以只有數字不會被雙引號包裹。 – 2011-12-22 15:19:39