正则用法详解
程序员文章站
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"));
上一篇: LintCode 117. 跳跃游戏 II JavaScript算法
下一篇: CSS语法