欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

正则用法详解

程序员文章站 2022-07-15 17:06:19
...

整理了一下正则

首先来说一下正则是什么

正则表达式,又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。

正则表达式的创建方式:

1 构造函数方式创建
var regExp = new RegExp(/\d/);
2 正则字面量
var regExp = /\d/;

正则的使用

/\d/.test("aaa1”);

正则常见元字符

正则用法详解

其他字符

. 匹配任意字符

/. 匹配 .

| 表示 “或” ,优先级最低

// 匹配aa 或者 bb

console.log(/aa|bb/.test("aabbb"));   // true
console.log(/f|boot/.test("boot"));  // true

//匹配单词f 或者 boot

console.log(/f|boot/.test("faaaa")); // true
console.log(/f|boot/.test("boot"));  // true

( ) 优先级最高,表示分组

// 匹配foot 或者 boot
console.log(/(f|b)oot/.test("faaaa"));  // false
console.log(/(f|b)oot/.test("foot"));   // true
console.log(/(f|b)oot/.test("boot"));   // true
console.log(/(f|b)oot/.test("faoot"));  // false

字符类的元字符

[ ] 在正则中表示一个字符的位置,[ ]里面写这个位置可以出现的某个字符

// 匹配 a 或者 b 或者 c 
console.log(/a|b|c/.test("a0000"));   // true
console.log(/[abc]/.test("boooo"));   // true

[^]在中扩号中的^表示非的意思。

//匹配不是abc的字符
console.log(/[^abc]/.test('abc')) //false

[a-z] [1-9]表示范围

console.log(/[a-z]/.test("d")); // 小写字母   //true
console.log(/[A-Z]/.test("d")); // 大写字母  // false
console.log(/[0-9]/.test("8")); // 数字  //true
console.log(/[a-zA-Z0-9]/.test('a4Z')); // true 所有的小写字母和大写字母以及数字

边界元字符

^ 表示开头 ([ ]里面的^表示取反)

//^MMtu 表示必须 MMtu开始
console.log(/^MMtu/.test("daMMtu"));//false
console.log(/^MMtu/.test("MMtug"));//true
console.log(/^MMtu/.test("daMMtug"));//false
console.log(/^MMtu/.test("MMtuMMtu"));//true

$ 表示结尾

// $表示结束  必须以MMtu结束
console.log(/MMtu$/.test("daMMtu"));   //true
console.log(/MMtu$/.test("MMtug"));    //false
console.log(/MMtu$/.test("daMMtug"));  //false
console.log(/MMtu$/.test("MMtuMMtu")); //true

^$ 表示精确匹配

// 精确匹配 必须只有MMtu这4个字母
console.log(/^MMtu$/.test("MMtu"));      //true
console.log(/^MMtu$/.test("daMMtu"));    //false
console.log(/^MMtu$/.test("MMtug"));    //false
console.log(/^MMtu$/.test("daMMtug"));  //false
console.log(/^MMtu$/.test("MMtuMMtu")); //false

量词类元字符

  • *表示可以出现0次或者多次,x>=0
 console.log(/^a*$/.test(""));      //true
console.log(/^a*$/.test("a"));     //true
console.log(/^a*$/.test("aa"));    //true
console.log(/^a*$/.test("aab"));   //false
console.log(/^a*$/.test("b"));     //false
  • +表示可以出现一次或者多次,x>=1
console.log(/^a+$/.test(""));      //false
console.log(/^a+$/.test("a"));    //true
console.log(/^a+$/.test("aa"));   //true
console.log(/^a+$/.test("aab"));  //false
console.log(/^a+$/.test("b"));    //false
  • ?表示可以出现0次或者1次,x=0 || x=1
 console.log(/^a?$/.test(""));      //true
console.log(/^a?$/.test("a"));     //true
console.log(/^a?$/.test("aa"));    //false
console.log(/^a?$/.test("aab"));   //false
console.log(/^a?$/.test("b"));     //false
  • { n }表示可以出现n次,x=n
// 精确匹配aaa
console.log(/^a{3}$/.test("aaa"));      //true
console.log(/^a{3}$/.test("aaaa"));      //false
  • {n,}表示可以出现n次或者n次以上,x>=n
console.log(/^a{3,}$/.test("aa"));  //false
console.log(/^a{3,}$/.test("aaaa")); /true
console.log(/^a{3,}$/.test("aaaaaaaaa")); //true
  • {n,m}表示能够出现n-m次
console.log(/^a{3,4}$/.test("aaa"));//true
console.log(/^a{3,4}$/.test("aaaa"));//true
console.log(/^a{3,4}$/.test("aaaaa"));//false

思考?

如何使用{ }来表示 * ,+,?

// 表示 ?
console.log(/^a{0,1}$/.test('')); // true
console.log(/^a{0,1}$/.test('a')); // true
console.log(/^a{0,1}$/.test('aa')); // false

// 表示 *
console.log(/^a{0,}$/.test('')); // true
console.log(/^a{0,}$/.test('a')); // true
console.log(/^a{0,}$/.test('aaaaaaaa')); // true

// 表示 +
console.log(/^a{1,}$/.test('')); // false
console.log(/^a{1,}$/.test('a')); // true
console.log(/^a{1,}$/.test('aaaaaaaa')); // true

正则的使用

  • 验证座机
//比如010-12345678 或  0797-1234567
// 开头是3-4位,首位必须是0
//后面是7-8位
var phoneReg = /^0\d{2,3}-\d{7,8}$/;
console.log(phoneReg.test("010-1234567"));    // true
console.log(phoneReg.test("010-12345678"));   // true
console.log(phoneReg.test("0101-12345678"));  // true
console.log(phoneReg.test("0999-12345678"));  // true
  • 验证姓名
//只能是汉字
//长度2-4位之间
//汉字范围[\u4e00-\u9fa5]
var nameReg = /^[\u4e00-\u9fa5]{2,4}$/;
console.log(nameReg.test("二二二"));
  • 验证QQ
//只能是数字
//开头不能是0
// 长度为5-11位
var qqReg = /^[1-9]\d{4,11}$/;
console.log(qqReg.test("925111111"));
console.log(qqReg.test("822618"));
  • 验证手机
 var myreg=/^[1][3,4,5,6,7,8,9][0-9]{9}$/
 console.log(myreg.test("18211111111"));
  • 验证邮箱

//前面是字母或者数字
// 必须有@
// @后面是字母或者数字
// 必须有.
//后面是字母或者数字
var emailReg = /^\w+@\w+(\.\w+)+$/;
console.log(emailReg.test("aaa@qq.com"));
console.log(emailReg.test("aaa@qq.com"));

相关标签: 正则 语法