JavaScript正则表达式常用的数据校验
2019年07月09日
765
正则表达式(Regular Expression)是一种用于匹配字符串中字符组合的模式。在 JavaScript 中,正则表达式也是对象,常用于文本的搜索、替换、验证等操作。
1. 邮箱校验 说明:校验常见的电子邮箱格式(支持点、下划线、短横,域名部分至少一个点)。
<script>
// 1 邮箱校验
const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z{2,}$]/;
//测试
let r1 = emailRegex.test('user@163.com');
let r2 = emailRegex.test('user.name+tag@sub.co.uk');
let r3 = emailRegex.test('user@domain');
console.log(r1,r2,r3)
</script>运行结果:
2. 中国大陆手机号码校验 说明:匹配11位数字,以1开头,第二位通常为3-9。
<script>
// 2 中国大陆手机号码校验
const phoneRegex = /^1[3-9]\d{9}$/;
//测试
let r1 = phoneRegex.test('13800138000');
//第二位不是3-9
let r2 = phoneRegex.test('12345678901');
console.log(r1,r2)
</script>运行结果:

3. 用户名/登录名校验 说明:仅允许字母、数字、下划线,长度4-16位,且必须以字母开头。
// 3 用户名/登录名校验
const usernameRegex = /^[a-zA-Z][a-zA-Z0-9_]{3,15}$/;
// 测试
let r1 = usernameRegex.test('john_doe123');
//数字开头
let r2 = usernameRegex.test('2john');
//长度不够
let r3 = usernameRegex.test('jo');
console.log(r1,r2,r3)运行结果:

4. 密码强度校验(至少包含大小写字母、数字、特殊字符,长度8-20) 说明:必须包含大写、小写、数字、特殊字符(@$!%*?&)中的至少三类,长度8-20。
//4 密码强度校验
const strongPasswordRegex = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,20}$/;
//测试
let r1 = strongPasswordRegex.test('Passw0rd!');
//缺少大写,数字,特殊字符
let r2 = strongPasswordRegex.test('passowrd');
console.log(r1,r2)运行结果:

5. 身份证号码(18位,简单格式校验)
说明:校验18位数字或17位数字+X(X大小写均可),不验证校验位。
<script>
// 5 身份证号码
const idCardRegex = /^[1-9]\d{5}(18|19|20)?\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[\dXx]$/;
// 测试
let r1 = idCardRegex.test('11010119900307663X');
//位数错误
let r2 = idCardRegex.test('12345678901234567');
console.log(r1,r2);
</script>运行结果:

6. 邮政编码(中国6位数字) 说明:精确匹配6位数字。
//邮政编码
const postalRegex = /^[1-9]\d{5}$/;
//测试
let r1 = postalRegex.test('100000');
//不能以0开头
let r2 = postalRegex.test('012345');
console.log(r1,r2)运行结果:

