常用校验正则表达式记录
1. 判断不包含某一字符串
/^((?!abc).)*$/.test('abc') //判断是否包含abc
2. 格式化金钱
function formatNumber(str) {
return str.replace(/\B(?=(\d{3})+(?!\d))/g, ',')
}
更多方法详见:js,正则实现金钱格式化
2.1 去除金额小数点后多余的0
function formatClear(moneyStr) { const CLEAR_REG=/(?:\.0*|(\.\d+?)0+)$/; return moneyStr.replace(CLEAR_REG, '$1') }
3. 校验手机号
function isTelCode(str) { var reg=/^[1][3,4,5,7,8][0-9]{9}$/;
return reg.test(str);
}
正则解释:1) 以 1 开头; 2) 第二位可为 3,4,5,7,8 中的任意一位; 3) 最后以 0-9 的 9个整数结尾。
function validateMobile(value) { var mobile = value.toString().replace(/(^\s*)|(\s*$)/g, ""); return /^[1][0-9]{10}$/.test(mobile); }
这个正则匹配就比较宽松了,比较常用。
4. 打码手机号
function maskMobile(mobile) { return mobile.replace(/(\d{3})(\d{4})(\d{4})/, '$1****$3'); }
5. 打码用户姓名(只保留最后一个字)
function maskName(name) { return name.replace(/.(?=.)/g, '*'); //仅仅匹配 任意字符后跟着任意字符的字符 }
6. 校验邮箱
function IsEmail(str) { var reg=/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+$/; return reg.test(str); }
7. 去除字符串两端空格
function trim(str) { return str.replace(/(^\s*)|(\s*$)/g, ""); } function leftTrim(str) { return str.replace(/(^\s*)/g,""); } function rightTrim(str) { return str.replace(/(\s*$)/g,""); }
8. 校验密码格式
// 只能是8位以上数字或者字母的组合 function validatePsw(str) { return /^[0-9A-Za-z]{8,20}$/.test(str); } // 必须是8位到32位由数字、字母的组合 function strictValidatePsw(str) { return /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,20}$/.test(str); }
9. 校验金额
// 金额必须大于0且为整数或小数,小数点后不超过2位 function validateAmount(amount) { return /(?!^0\d*$)^\d{1,16}(\.\d{1,2})?$/.test(amount); } // 金额必须大于等于1且为整数或小数,小数点后不超过2位 function validateAmount(amount) { return /(?!^0(\.\d*)?$)^\d{1,16}(\.\d{1,2})?$/.test(amount); }
这个正则的实现思路主要是用非贪婪模式先排除为 0 的和 0.** 的数