常用的一些正则表达式

108 阅读1分钟

1、匹配任意字符

const regex = /[\d\D]/g、/[\w\W]/g、/[\s\S]/g 和 /[^]/g

2、表示十六进制颜色

const regex = /#([0-9a-fA-F]{6}|[0-9a-fA-F]{3})/g

3、匹配24小时制的时间

const regex = /^([01][0-9]|[2][0-3]):[0-5][0-9]$/
console.log( regex.test("23:59") );
console.log( regex.test("02:07") );
// => true
// => true

4、匹配日期

const regex = /^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$/;
console.log( regex.test("2017-06-10") );
// => true

5、匹配window 操作系统文件路径

const regex = /^[a-zA-Z]:\\([^\\:*<>|"?\r\n/]+\\)*([^\\:*<>|"?\r\n/]+)?$/;
console.log( regex.test("F:\\study\\javascript\\regex\\regular expression.pdf") );
console.log( regex.test("F:\\study\\javascript\\regex\\") );
console.log( regex.test("F:\\study\\javascript") );
console.log( regex.test("F:\\") );
// => true
// => true
// => true
// => true
// => true

6、不匹配任何字符

const regex = /.^/;

7、数字的千位分隔符表示法

const regex = /(?!^)(?=(\d{3})+$)/g;
const result = "12345678".replace(regex, ',')
console.log(result);
// => "12,345,678

8、密码长度 6-12 位,由数字、小写字符和大写字母组成,但必须至少包括 2 种字符

const regex = /((?=.*[0-9])(?=.*[a-z])|(?=.*[0-9])(?=.*[A-Z])|(?=.*[a-z])(?=.*[A-
Z]))^[0-9A-Za-z]{6,12}$/ || /(?!^[0-9]{6,12}$)(?!^[a-z]{6,12}$)(?!^[A-Z]{6,12}$)^[0-9A-Za-z]{6,12}$/;
console.log( regex.test("1234567") ); // false 全是数字
console.log( regex.test("abcdef") ); // false 全是小写字母
console.log( regex.test("ABCDEFGH") ); // false 全是大写字母
console.log( regex.test("ab23C") ); // false 不足6位
console.log( regex.test("ABCDEF234") ); // true 大写字母和数字
console.log( regex.test("abcdEF234") ); // true 三者都有

9、匹配到开头和结尾的空白符,然后替换成空字符

function trim (str) {
  return str.replace(/^\s*(.*?)\s*$/g, "$1");
}
console.log( trim(" foobar ") );
// => "foobar

10、将每个单词的首字母转换为大写

function titleize (str) {
  return str.toLowerCase().replace(/(?:^|\s)\w/g, function (c) {
      return c.toUpperCase();
  });
}
console.log( titleize('my name is epeli') );
// => "My Name Is Epeli"

11、驼峰化

function camelize (str) {
  return str.replace(/[-_\s]+(.)?/g, function (match, c) {
      return c ? c.toUpperCase() : '';
  });
}
console.log( camelize('-moz-transform') );
// => "MozTransform"

12、中划线化

function dasherize (str) {
  return str.replace(/([A-Z])/g, '-$1').replace(/[-_\s]+/g, '-').toLowerCase();
}
console.log( dasherize('MozTransform') );
// => "-moz-transform

13、匹配成对标签

const regex = /<([^>]+)>[\d\D]*<\/\1>/;
const string1 = "<title>regular expression</title>";
const string2 = "<p>laoyao bye bye</p>";
const string3 = "<title>wrong!</p>";
console.log( regex.test(string1) ); // true
console.log( regex.test(string2) ); // true
console.log( regex.test(string3) ); // false

14、身份证

const regex = /^(\d{15}|\d{17}[\dxX])$/

15、IPV4 地址

const regex = /^((0{0,2}\d|0?\d{2}|1\d{2}|2[0-4]\d|25[0-5])\.){3}(0{0,2}\d|0?\d{2}|1\d{2}|2[0-4]\d|25[0-5])$/

16、匹配固定电话

055188888888
0551-88888888
(0551)88888888
const regex = /^(0\d{2,3}-?|\(0\d{2,3}\))[1-9]\d{6,7}$/

16、匹配浮点数

1.23、+1.23、-1.23
10、+10、-10
.2、+.2、-.2
const regex = /^[+-]?(\d+\.\d+|\d+|\.\d+)$/