← 返回目录

17. Array.isArray 与正则校验

表单校验是正则的主战场。先解决一个老问题:typeof 分不清数组和普通对象,要用 Array.isArray。然后背几个拿来就能用的常用正则

17.1 互动演示(表单实时校验)

输入内容点按钮,看正则 test 的真/假结果。

17.2 知识点逐条讲解(配合代码)

① typeof 认不出数组,用 Array.isArray

typeof [];                 // 返回"object",和普通对象分不清
Array.isArray([]);         // 真数组 → true(推荐这个)
Array.isArray({});         // 普通对象 → false
[] instanceof Array;       // 也能判,了解即可

	

② 正则两种写法 + test()

正则就是「匹配规则」。test() 像拿规则去试:字符串符合规则就返回 true,不符合就 false

let reg = /abc/;                 // 斜杠写规则(推荐)
let reg2 = new RegExp("abc");    // 另一种写法
reg.test("abc123");              // 字符串里含abc → true

	

③ 业务常用正则速查表(背下来直接用)

用途正则
手机号/^1[3-9]\d{9}$/
中文姓名(2~4字)/^[一-龥]{2,4}$/
邮箱(简易)/^\w+@\w+\.\w+(\.\w+)?$/
身份证(18位简易)/^[1-9]\d{5}(19|20)\d{2}\d{2}\d{2}\d{3}[\dXx]$/

④ 正则配 replaceAll / split

"订单1001,价格299".replaceAll(/\d+/g, "***"); // 把数字全打码
"苹果,香蕉|橘子;西瓜".split(/[,|;]/);   // 逗号、竖线、分号都当分隔

	

如果你用 replace 想全部替换却只换了第一个,就会踩坑。因为 replace(不带 g)只换第一个,要全部换得用 replaceAll,或者正则后面加 /g(g 就是「全局」的意思)。

⑥ X.3 实战:用在哪 / 常见坑 / 怎么解决

① 用在哪:登录页校验手机号/邮箱、注册校验中文姓名、手机号中间四位打星脱敏。

② 常见坑:typeof 判数组得到 object;replace() 以为全替其实只替第一个。

③ 怎么解决:判数组用 Array.isArray();全替换用 replaceAll() 或正则加 /g

一句话记住:认数组用 Array.isArray(typeof 不行);正则用斜杠 /.../,test() 返回真假;手机号/姓名/邮箱正则背下来;replace 只换第一个,replaceAll 或加 /g 才全换