它應該匹配0.1,1,01,但不是01,00.1,或者帶有字符的任何東西。需要一個正則表達式來匹配十進制數字而不是前導0
我想確定一個值是否應該被引用並在放入mysql插入語句之前轉義。我必須注意一些可能帶有前導0的數字的varchar鍵,如果作爲數字插入,它們將被截斷。
我也會使用內置的php或mysql函數(如果可用)。
編輯:這一個似乎涵蓋我所有的基地:
/^([1-9][0-9]*(\.[0-9]+)?|0\.[0-9]+|\.[0-9]+|0)$/
它應該匹配0.1,1,01,但不是01,00.1,或者帶有字符的任何東西。需要一個正則表達式來匹配十進制數字而不是前導0
我想確定一個值是否應該被引用並在放入mysql插入語句之前轉義。我必須注意一些可能帶有前導0的數字的varchar鍵,如果作爲數字插入,它們將被截斷。
我也會使用內置的php或mysql函數(如果可用)。
編輯:這一個似乎涵蓋我所有的基地:
/^([1-9][0-9]*(\.[0-9]+)?|0\.[0-9]+|\.[0-9]+|0)$/
這將滿足您的例子:
preg_match('#^(?=[1-9]|0\.|\.\d)\d*(\.\d+)?$#', $num)
的?=
斷言保證它要麼從1-9
或0.
開始,所以任何其他前導零不包括在內。您可能想限制\d+
可以匹配的decmal數量。
這一個不匹配0. – 2011-05-26 17:23:11
您是否嘗試過使用正則表達式? – AntonioCS 2011-05-26 16:46:10