一,開篇
對於「檢測字串是否數值」,網上搜尋結果確實不少,基本思路都是使用正規表示式,基本上都是直接上**,基本上好像都靠譜
。。。但是談思路的不多。
二,什麼樣的字串才是數值
總的來說,字串的字元只能存在於:①正號②負號③小數點④0~9的數字,且
正號和負號只能出現在頭部且最多只能出現1次;
小數點最多只能出現1次,且可以作為開頭(.01),也可以作為結尾(10.),單小數點又不能單獨存在(.)
三,結論
從上述可以看出,基本上用1個正規表示式來進行判斷的幾乎都會存在漏洞的。
所以筆者的思路是用2個!
【^[-\\+]?[0-9]+[.]?[0-9]*$】是用來匹配和中的小數點(只能出現1次,可以作為結尾,不能單獨存在)
【^[.]?[0-9]+$】用來匹配小數點可以作為開頭
/**
* 檢測是否為數值字串
* 可以有符號位(+或-),可以以小數點開頭,也可以以小數點結尾
* @param str 字串
* @return 是|否數值字串
* @since 2015.12
*/public boolean isnumeric(string str)
//20151130剔除字串首尾空白
str = str.trim();
pattern pattern1 = pattern.compile("^[-\\+]?[0-9]+[.]?[0-9]*$");
if(pattern1.matcher(str).matches() == true)
//再檢測是否有小數點開頭的情形
pattern pattern2 = pattern.compile("^[.]?[0-9]+$");
return (pattern2.matcher(str).matches());
//.0000000漏網
}
對於是否【整數】的檢測就簡單了:為數值,且不包含小數點
return(isnumeric(str) && (str.indexof('.') == fsspec.not_found) );
對於【浮點數】:為數值,且包含小數點
return(isnumeric(str) && (str.indexof('.') != fsspec.not_found) );
以上,僅供拋磚引玉。
檢測字串
instanceof 用來檢測某乙個例項是否屬於這個類 constructor 利用原型構造器的方式檢測資料型別 object.prototype.tostring.call 借用內建類object原型上的tostring方法實現資料型別檢測console.log typeof typeof typ...
JavaScript檢測字串中是否有空格
第一種方法 isnan 使用js自帶全域性函式isnan isnan 返回乙個boolean值,如下 var c hello 字串 isnan c 返回乙個true var c 10 數字 isnan c 返回乙個false 如果以上c為乙個空串或是乙個空格,isnan將把c當作數字0來處理,所以檢...
python檢測字串是否是回文字串
coding utf 8 spyder editor author linguiyuan def reverse text return text 1 def ishuiwen text return text reverse text text input 輸入乙個字串判斷是否是回文字串 n if...