← 返回目录

17. Array.isArray 与正则校验

正则就是一套匹配规则,验证手机号、邮箱、身份证这类格式校验全靠它。

核心三步:
test()——验证字符串是否匹配,返回 true/false
d——数字、w——字母数字下划线、s——空格
^ 开头 $ 结束——完整匹配

坑:正则里的反斜杠要双写、[] 是或、{} 是数量、test 返回布尔值别当真值用

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

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

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

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

// 返回"object",和普通对象分不清
typeof [];

// 真数组 → true(推荐这个)
Array.isArray([]);

// 普通对象 → false
Array.isArray({});

// 也能判,了解即可
[] instanceof Array;

② 正则两种写法 + test()

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

// 斜杠写规则(推荐)
let reg = /abc/;

// 另一种写法
let reg2 = new RegExp("abc");

// 字符串里含abc → true
reg.test("abc123");

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

用途正则
手机号/^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 才全换

本页重点

API作用参数返回值代码示例
/规则/.test(str)测字符串是否匹配字符串真/假
/abc/.test("abc123");  // true
str.replaceAll(规则,新)把匹配的全部换掉规则、新串新字符串
"a-b".replaceAll(/-/g, "_");
g 修饰符全局匹配所有
/a/g.test("aaa");  // 全局匹配