Skip to content

常用正则

符号描述
d匹配一个数字字符
D匹配一个非数字字符
w匹配字母、数字或者下划线,类似于[A-Za-z0-9_]
W匹配除字母、数字或者下划线以外的字符。等价于[^A-Za-z0-9_]
s匹配一个空白字符(空格、制表符和换行符)
.匹配任意一个字符
^匹配开头
$匹配结尾
/在特殊字符前加,表示下一个字符不是特殊字符,应该按照字面意理解例如:/^.表示匹配任意字符。/表示匹配点
[]可以创建字符集合,表示匹配方括号中的任意字符。
1、[ab]匹配 a 或者是 b
2、使用短横线-来指定一个字符范围,如:[a-z]匹配 a 到 z 之间的任意一个字符
3、^表示否定,如: [^a] 匹配除 a 之外的任意一个字符)
*匹配前面的子表达式零次或多次,等价于: {0,}
+匹配前面的子表达式一次或多次,等价于: {1,}
?匹配前面的子表达式零次或一次,等价于: {0,1}
{n}n 是一个正整数,匹配前面的子表达式n次
{n,}n 是一个正整数,匹配前面的子表达式至少n次
{n,m}n 和 m 是一个正整数,匹配前面的子表达式至少n次,至多m次
i不区分大小写
g全局匹配

1、邮箱

js
const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;

// 测试
console.log(emailRegex.test('test@example.com')); // true
console.log(emailRegex.test('invalid-email')); // false

2、手机号

js
const phoneRegex = /^1[3456789]\d{9}$/;

// 测试
console.log(phoneRegex.test('13800138000')); // true
console.log(phoneRegex.test('12345678901')); // false

3、身份证号

js
const idCardRegex = /^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;

// 测试
console.log(idCardRegex.test('41010119900101001X')); // true
console.log(idCardRegex.test('123456789012345678')); // false

4、URL

js
const urlRegex = /^(https?|ftp):\/\/[^\s/$.?#].[^\s]*$/i;

// 测试
console.log(urlRegex.test('http://www.example.com')); // true

5、获取网页 img 地址

js
const matchImgs = (sHtml) => {
  const imgUrlRegex = /<img[^>]+src="((?:https?:)?\/\/[^"]+)"[^>]*?>/gi;
  let matchImgUrls = [];

  sHtml.replace(imgUrlRegex, (match, $1) => {
    $1 && matchImgUrls.push($1);
  });
  return matchImgUrls;
};

console.log(matchImgs(document.body.innerHTML));