保留兩位小數的百分比正則表達式


保留最多兩位小數的百分比正則表達式:  /^\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;
    }

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM