保留最多兩位小數的百分比正則表達式: /^\d+\.?\d{0,2}%$/
44.5% 44.66% 0.3% 5% 都正確 53 33.444% -5.66%都錯誤
有且僅保留兩位小數的百分比正則表達式: /^\d+\.?\d{2}%$/
44.66%正確 55 0.3% 5% 33.444% -5.66%都錯誤
Js: /^\d+\.?\d{0,2}%$/
java : ^\\d+\\.?\\d{0,2}%$
function IsPercent(){
var str = "0.47%";
alert(str);
if(str.length!=0){
alert(1);
var reg = /^\d+\.?\d{2}%$/;
var r = str.match(reg);
alert(r);
if(r==null)
alert('對不起,您輸入的百分比格式不正確!'); //請將“日期”改成你需要驗證的屬性名稱!
}
}
excel校驗器
寫入excel的是百分比,可是經過代碼解析讀出來就變成了小數,插入數據庫需要轉成百分比,所以在校驗之后如果符合四位小數就設置成百分比
保留四位的小數正則表達式:^\\d+\\.?\\d{4}$
/**
* @author mashunran 功能: 保留有且僅有兩位小數的百分比,帶%符號
* 44.66% 0.4422正確 55 0.3% 5% 33.444% -5.66%都錯誤
*/
@Service("百分比校驗器")
@Scope("prototype")
public class PercentValidator extends Validator<Object> {
// 有且僅有兩位小數百分比正則表達式
private static final String PERCENT = "^\\d+\\.?\\d{2}%$";
// 保留四位小數的小數,如0.3333(防止excel的百分比轉換為了小數)
private static final String FOURFLOAT = "^\\d+\\.?\\d{4}$";
@Override
public void validate(Object dataLine, List<Object> readedLines, Map<String, String> nextLineCellValues) throws Exception {
for (int i = 0; i < beanPropertys.size(); i++) {
Object value = PropertyUtils.getProperty(dataLine, beanPropertys.get(i));
boolean result = false;
if (value != null && value.toString().matches(PERCENT)) {
result = true;
}else if (value != null && value.toString().matches(FOURFLOAT)) {
// 把四位小數轉換為兩位小數的百分比
value = NumberUtil.getPercent(Double.valueOf(value.toString()));
PropertyUtils.setProperty(dataLine, beanPropertys.get(i), value);
result = true;
}
if(!result){
addError(columnHeaders.get(i)
+ "應該為保留兩位小數的百分比 !");
}
}
}
@Override
public boolean isContinueValidate() {
return false;
}
}