thymeleaf中常用的金额、数字、百分比、手机号校验及对应java中的格式化

thy中常用的金额、数字、百分比

金额格式化:

格式化为1000,000,000.23元的样式

{
    field : 'amount',
    title : '金额(元)', align : 'right',
    formatter : function (value , row, index) {
        return formatMoney(value);
    }
},
/**
 * 把金额格式成为每三位一逗号分隔,显示小数位数自己定义,默认是两位
 * @param value 金额
 * @param type 小数位数, 默认是两位小数
 * @returns {*}
 */
var formatMoney = function (value, type) {
    if (value == null || value == '') {
        return '';
    }
    if (type == null || type == '') {
        type  = 2;
    }
    return value.toFixed(type).replace(/(\d)(?=(\d{3})+\.)/g, '$1,');
};

百分比-BigDecimal

//费率,保留一位小数
projectBean.setRate(rate.multiply(BigDecimal.valueOf(100)).setScale(1));

html页面的占比

在html页面处理rate不推荐,最好还是在后头或者js中处理,下面这个作为了解,使用的是numbers.formateDecimal方法

 <label class="col-sm-3 control-label">占比:</label>
 <div class="col-sm-8">
       <input id="rate" name="rate"
              th:value="${#numbers.formatDecimal(rate*100,2,1)}+'%'"
              class="form-control" type="text" readonly>

产生任意的字母+3位数字

    /**
     * 时间格式化
     */
    protected static final SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");

    /**
     * 产生唯一 的序列号。
     * 
     * @return String
     */
    public static String getSerialNumber() {
        /*int hashCode = UUID.randomUUID().toString().hashCode();
        if (hashCode < 0) {
            hashCode = -hashCode;
        }
        String hashCodeString = String.valueOf(hashCode);
        */
        String chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        String num = "0123456789";
        String randomChar = String.valueOf(chars.charAt((int)(Math.random() * 26)));
        String randomNum = String.valueOf(num.charAt((int)(Math.random() * 10)))+String.valueOf(num.charAt((int)(Math.random() * 10)))+String.valueOf(num.charAt((int)(Math.random() * 10)));
        return sdf.format(DateUtil.getNow()).substring(2, 6)+randomChar + randomNum;
    }

数值占比-BigDecimal的除法

    //占比
    BigDecimal productAccount = productDO.getProductAccount();
    BigDecimal assetAmount = internalAssetDO.getAssetAmount();
    if (productAccount != null && assetAmount != null) {
          //保留占比两位小数
          productDO.setProductAssetScale(productAccount.divide(assetAmount,2,BigDecimal.ROUND_HALF_UP));
    }

手机号、身份证格式

$(".mobilePhone").blur(function () {
    var str = $(this).val();
    if (str != "" && str != null) {
        var re = /^1\d{10}$/;
        if (!re.test(str)) {
            $(this).val("");
            alert("手机号格式不正确");
            return;
        }
    }
});
$(".cardid").blur(function () {
    var str = $(this).val();
    if (str != "" && str != null) {
        var re = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
        if (!re.test(str)) {
            $(this).val("");
            alert("身份证格式不正确");
            return;
        }
    }
});

input输入过程中校验数字

<div class="col-sm-3">
<input id="personBankNumber2" name="bankNumber" class=" bankno" type="text" required>
 <span class="personBankNumber2Validate" style="color: red;" ></span>
 </div>
//个人放款银行账号输入校验,没有数据时输入
$(".bankno").blur(function () {
    var str = $(this).val();
    if (str != "" && str != null) {
        var re = /^[0-9]\d{10,19}$/;//这里表示的是11位到20位的都接受
        if (!re.test(str)) {
            $(this).val("");
            $(this).siblings(".personBankNumber2Validate").html("请输入正确银行卡号")
        }else {
            $(this).siblings(".personBankNumber2Validate").html('');
        }
    }else{
        $(this).siblings(".personBankNumber2Validate").html('');
    }

});
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页