专门为初学者编写的正则表达式入门教程

2020-05-10 20:00:16王振洲

/---(?:(?!---).)*---/g

11.2 例子

密码验证

/^(?=.*d)(?=.*[a-z])(?=.*[A-Z])(?=.*[a-zA-Z]).{8,}$/

零宽断言可用于验证多个条件。

带引号的字符串

/(['"])(?:(?!1).)*1/g

如果没有先行断言,我们最多只能做到这样:

/(['"])[^'"]*1/g

12 进阶例子

JavaScript 注释

//*[sS]*?*/|//.*/g

[sS]是一种匹配任何字符(包括换行符)的技巧。我们避免使用dot-all 修饰符,因为我们需要使用. 表示单行注释。

24小时时间

/^([01]?[0-9]|2[0-3]):[0-5][0-9](:[0-5][0-9])?$/g

IP 地址

/b(?:(?:2(?:[0-4][0-9]|5[0-5])|[0-1]?[0-9]?[0-9]).){3}(?:(?:2([0-4][0-9]|5[0-5])|[0-1]?[0-9]?[0-9]))b/g

元标签

/<Example source="(.*?)" flags="(.*?)">/gm

替换: <Example regex={/$1/$2}>

浮点数

可选符号

可选整数部分

可选小数部分

可选指数部分

/^([+-]?(?=.d|d)(?:d+)?(?:.?d*))(?:[eE]([+-]?d+))?$/g

正向的先行断言 (?=.d|d) 确保不会匹配 ..

HSL颜色

从0到360的整数

/^0*(?:360|3[0-5]d|[12]?d?d)$/g

百分比

/^(?:100(?:.0+)?|d?d(?:.d+)?)%$/g

HSL 和 百分比

/^hsl(s*0*(?:360|3[0-5]d|[12]?d?d)s*(?:,s*0*(?:100(?:.0+)?|d?d(?:.d+)?)%s*){2})$/gi