保留两位小数的百分比正则表达式

保留最多两位小数的百分比正则表达式:  /^\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;
    }

}

 

posted @ 2016-03-29 13:56  静子1019  Views(9559)  Comments(1Edit  收藏  举报