方法介绍
match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。该方法类似 indexOf() 和 lastIndexOf(),但是它返回指定的值,而不是字符串的位置。
replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
1,阻止在输入框里输入空格
//在 keyup()方法里,\s 匹配任何空白字符,包括空格、制表符、换页符等等。
.keyup(function(){
this.value=this.value.replace(/\s+/g,'');//阻止输入空格
})
2,阻止输入非数字
//如果输入非数字,则替换为''
.keyup(function(){
this.value=this.value.replace(/[^\d]/g, '');
}
3,每四位数字添加上一个空格
.keyup(function(){
this.value=this.value.replace(/(\d{4})(?=\d)/g, "$1 ");
}
4, 身份证号码的验证:
十八位: ^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$
十五位: ^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{2}$
/(^[1-9]\d{7}(0[1-9]|1[0-2])((0[1-9])|([12]\d)|(3[01]))\d{3}$)|(^[1-9]\d{5}(19|20|21)?\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|[xX])$)/
关于身份证号的说明:身份证号长度分为15位和18位两种
15位,(据本宝宝所知的)15位的对比18位的少了出生日期的年份两位数和一位顺序码。
18位,前6位为地址码,第七位至14位为出生日期码,此码由6位数改为8位数,其中年份用4位数表示,第15位至17位为顺序码,取消了顺序码中对百岁老人使用的特定编号;第十八位为校验码,主要是为了校验计算机输入公民身份证号码的前17位数字是否正确,其取值范围是0至10,当值等于10时,用罗马数字符X表示;
实例(本例子未对15位身份证号效验):
//输入框失去焦点的时候
if($(this).is("#aaaa")){
if($(this).val()===""){
alert("持卡人身份证号不能为空");
} else if($(this).val().length>=15){
var regName=/(^[1-9]\d{7}(0[1-9]|1[0-2])((0[1-9])|([12]\d)|(3[01]))\d{3}$)|(^[1-9]\d{5}(19|20|21)?\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|[xX])$)/;
var city={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江 ",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北 ",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏 ",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外 "};
if($(this).val().length>18){
alert("字数超长,不能超过18个字");
return
}
if(!regName.test($(this).val())){
alert("身份证格式不正确");
} else {
if($(this).val().length === 18){
code = $(this).val().split('');
var factor = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 ];
var parity = [ 1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2 ];
var sum = 0;
var ai = 0;
var wi = 0;
for (var i = 0; i < 17; i++){
ai = code[i];
wi = factor[i];
sum += ai * wi;
}
if(parity[sum % 11] != code[17].toUpperCase()){
alert("身份证号校验位错误");
return
}
}
}
} else {
alert("身份证格式不正确");
}
}
5,手机号的效验
// 简单的校验
/^1[3-9]\d{9}$/
//在离开输入框的时候,.blur() 方法
var telVal=$.trim(this.value);//去可能存在的首尾空格
if(!regName.test(telVal){
alert("手机号格式不正确!")
}
6,登录密码效验
//在输入框失去焦点的时候
if ($(this).is("#bbbb")){
var regPass=$.trim(this.value);
var conPass=$("#cccc").val();//确认密码的值
var regularization=/^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,30}$/;
if(regPass==""){
alert("登录密码不能为空!");
} else if (regPass.length<8 || !regularization.test(this.value)){
alert("长度8~30位字符,且为英文字母和数字的组合");
} else if(regPass!== "" && regPass!==conPass && conPass!==""){
alert("两次输入的密码不一致!");
}
}
7,限制只能输入数字和字母
.keyup({
if($(this).is("#socialUnificationCode")){
//判断输入框里是否有非数字字母
if(/^[0-9a-zA-Z]+$/.test(this.value)){
//如果输入的是非数字和字母,去除不符合字符
this.value=this.value.replace(/[^0-9a-zA-Z]/g,'');
console.log("**不正确");
}
}
})
8,限制只含有字母和数字,且最少一个数字和字母的六位字符
/^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6}$/.test(value)
9,金额限制
<input type="text" class="form-control" id="dddd" name="splitAmount"/>
jQuery("#dddd").keyup(function () {
var reg = jQuery(this).val().match(/\d{1,10}\.?\d{0,2}/);
var txt = '';
if (reg != null) {
txt = reg[0];
}
jQuery(this).val(txt);
}).change(function () {
jQuery(this).keypress();
var v = jQuery(this).val();
if (/\.$/.test(v)) {
jQuery(this).val(v.substr(0, v.length - 1));
}
});
// vue 中
let reg = e.match(/\d{1,10}\.?\d{0,2}/);
let txt = '';
if (reg != null) {
txt = reg[0];
}
this.dataForm.amount = txt
10,营业执照号
市面上现在有2中企业营业执照注册号(统一社会信用代码),一种是15位(从2007年开始),一种是18位(从2015年开始)。
// 验证 15 位
reg = '/^\d{15}$/';
// 验证 18 位
reg = '/^(?:(?![IOZSV])[\dA-Z]){2}\d{6}(?:(?![IOZSV])[\dA-Z]){10}$/';
// 合并
reg = '/(^(?:(?![IOZSV])[\dA-Z]){2}\d{6}(?:(?![IOZSV])[\dA-Z]){10}$)|(^\d{15}$)/';
网友评论