实用的 JavaScript 正则表达式
XPoet 自由程序猿

此文收录在日常开发及各种业务场景下常用的正则表达式,持续更新…

正则表达式

正则表达式(英语:Regular Expression,在代码中常简写为 regexregexpRE)使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式。

正则表达式是一种强大的文本匹配和处理工具,它在处理字符串、表单验证、文本搜索等场景中都发挥着重要的作用。

语法

1
/正则表达式主体/修饰符(可选)
1
2
3
4
5
6
7
eg:
const RE = /xpoet/i;

解析:
/xpoet/i 是一个正则表达式
xpoet 是一个正则表达式主体 (用于检索)
i 是一个修饰符 (搜索不区分大小写)

常用的匹配规则

验证数字

验证整数或带小数点的数字

1
2
3
4
5
6
const regex = /^-?\d+(\.\d+)?$/

console.log(regex.test(1)) // true
console.log(regex.test(-1)) // true
console.log(regex.test(1.1)) // true
console.log(regex.test('1a')) // false

验证邮箱

验证字符串是否符合邮箱格式

1
2
3
4
const regex = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/

console.log(regex.test('example@email.com')) // true
console.log(regex.test('example#email.com')) // false

验证汉字

验证字符串是否只包含汉字。[\u4e00-\u9fa5] 匹配汉字的 Unicode 范围。

1
2
3
4
5
const regex = /^[\u4e00-\u9fa5]+$/

console.log(regex.test('中文')) // true
console.log(regex.test('Chinese')) // false
console.log(regex.test('123')) // false

验证英文

验证字符串是否只包含英文。

1
2
3
4
5
const regex = /^[a-zA-Z]+$/

console.log(regex.test('中文')) // false
console.log(regex.test('Chinese')) // true
console.log(regex.test('123')) // false

验证网址

1
2
3
4
const regex = /^(https?:\/\/)?([a-zA-Z0-9-]+\.){1,}([a-zA-Z]{2,})(\/[^\s]*)?$/

console.log(regex.test('https://www.example.com')) // true
console.log(regex.test('https://example')) // false

验证手机号

1
2
3
4
const regex = /^1[3456789]\d{9}$/

console.log(regex.test(13000000000)) // true
console.log(regex.test(12000000000)) // false

验证身份证号码

验证身份证号码的格式,支持 15 位和 18 位身份证号码。

1
2
3
4
const regex = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/

console.log(regex.test('440101200001011000')) // true
console.log(regex.test('4400000000')) // false

验证图片格式

1
2
3
4
5
const regex = /(png|jpg|jpeg|gif|webp|awebp|bmp|avif|svg\+xml|svg|x-icon)$/i

console.log(regex.test('image.jpg')) // true
console.log(regex.test('image.png')) // true
console.log(regex.test('image.png1')) // false

验证 IPv4 地址

1
2
3
4
5
const regex = /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/

console.log(regex.test('192.168.1.1')) // true
console.log(regex.test('192.168.1')) // true
console.log(regex.test('192.168.1.257')) // false

验证十六进制颜色

验证 RGB Hex 颜色

1
2
3
4
const regex = /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/

console.log(regex.test('#000')) // true
console.log(regex.test('#0000')) // false

验证 QQ 号

验证 QQ 号,5 ~ 11 位数

1
2
3
4
const regex = /^[1-9][0-9]{4,10}$/

console.log(regex.test(10000)) // true
console.log(regex.test(00000)) // false

验证车牌号

验证 QQ 号,5 ~ 11 位数

1
2
3
4
const regex = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-Z0-9]{4}[A-Z0-9挂学警港澳]{1}$/

console.log(regex.test('粤B99999')) // true
console.log(regex.test('粤B9999')) // false
 Comments
Comment plugin failed to load
Loading comment plugin