正则表达式的学习与总结

正则表达式的基本概念
  • 正则表达式:也叫规则表达式,按照一定的规则组成的一个表达式,主要用来匹配字符串的
  • 在大多数编程语言中都可以使用
  • 最早是用在神经学中的
  • 组成:是由元字符或者限定字符组成的一个式子
  • 元字符
  • . 除了\n以外的任意一个字符
  • [] 里边可以放什么东西就代表什么东西,一般多表示范围
  • [0] 表示数字0
  • [360] 表示3或者6或者0
  • [0-9] 表示0到9之间任何一个数字 [100-200]错误的写法
  • [0-9]{10} 表示0到9之间任何一个数字出现了10次
  • [1][0-9][0-9] 表示100到199之间的任意一个数字
  • [a-z] 表示26个小写字母
  • [a-zA-Z] 表示大小写字母中的其中一个
  • [0-9a-zA-Z] 表示所有的数字或者字母中的一个
  • [0-9]|[a-z] 表示要么是数字,要么是一个小写的字母
  • |表示或的意思,优先级最低,最后才计算
  • () 分组 [0-9]|([a-z])|[A-Z]改变优先级
  • ([0-9])([1-5])([a-z]) 三组,从最左边开始计算
  • {n} 表示的该限定符前面的表达式出现了n次
  • [a-z]{3} 表示a-z之间的字母出现了三次
  • [a-z0-9]{1,6} 最少出现1次最多出现6次
  • 表示前面的表达式出现0次或者多次 [a-z][0-9]* 表示小写字母中的任意一个,后面要么没数字,要么是多个数字的
  • +示前面的表达式出现1次或者多次 {1,}
  • ?表示前面的表达式出现0次或者1次 另一个含义:阻止贪婪模式
  • \d 数字中的任意一个
  • \D 非数字
  • \s 空白符中的一个
  • \S 非空白符
  • \w 表示非特殊符号 下划线_也是非特殊字符
  • \W 表示特殊符号
  • \b 单词边界
  • g 表示全局匹配
  • i 忽略大小写
  • 限定符:表示前面的表达式出现的次数
  • {} 更加明确前面的表达式出现的次数
  • {0,} 表示的是前面的表达式出现了0次到多次,和 * 一样的
  • {1,} 表示的是前面的表达式出现了1次到多次,和 + 一样的
  • {0,1} 表示的是前面的表达式出现了0次到1次, 和 ?一样的
  • {4} 表示前面的表达式出现4次
  • {,10} =====错误的
  • 表示以什么开始,或者取非(取反)
  • ^[0-9] 以数字开头
  • ^[a-z] 以小写字母开头
  • [^0-9] 取反,非数字
  • [^a-z] 非小写字母
  • $ 表示以什么结束,可配合^使用
  • ^[0-9][a-z]$ 相当于严格模式
正则表达式的简单使用
  • 常见案例如下:
  • 15位或者18位身份证号码 ([1-9][0-9]{14})|([1-9][0-9]{16}[0-9xX])
  • 15位号码: [1-9][0-9]{14}
  • 18位号码: [1-9][0-9]{16}[0-9xX]
  • 简写: ([1-9][0-9]{14})([0-9]{2}[0-9xX])?
  • 座机号码的正则表达式
    *规律: 010-19876542
  • 规律: 0412-19822393
    *匹配规则: [0-9]{3,4}[-][0-9]{8} 或者\d{3,4}[-]\d{8}
  • qq号码
  • 规律: 5-11数字
    *匹配规则: [1-9][0-9]{4,11}
  • 手机号
  • 规律: 11位数字
  • 规律: 130 131 132 134 135 136 137 138 139
  • 规律: 143 147
  • 规律: 150到159
  • 规律: 170 171 173 176 177
  • 规律: 180到189
  • 匹配规则: ([1][358][0-9][0-9]{8})|([1][4][37][0-9]{8})|([1][7][01367][0-9]{8})
    ^ 手机号/座机号: /^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(17[01367])|(18[0,5-9]))\d{8}/
  • 简写: \d{11}
    *注释:如果有新的号码规律,完善规则即可
  • 邮箱正则表达式
  • 规律: 数字、字母、下划线、中划线、点、 [email protected] 等等
  • 匹配规则: ^[0-9a-zA-Z_.-]+[@][0-9a-zA-Z_.-]+([.][a-zA-Z]+){1,2}&

*中文正则表达式

  • 匹配规则:[\u4e00-\u9fa5]
  • escape 将中文编码
  • unescape 把编码转成中文

//判断密码级别
function getLvl(pwd) {
var level = 0;
//验证密码中是否有数字
if(/\d/.test(pwd)){
level++;
}
//验证密码中是否有字母
if(/[a-zA-Z]/.test(pwd)){
level++;
}
//验证密码中是否有特殊符号
if(/[^0-9a-zA-Z_]/.test(pwd)){
level++;
}
return level; // 1 或者 3
}

//匹配全部的数字
var str = "中国移动:10086,中国联通:10010,中国电信:10000";
var array = str.match(/\d{5}/g);
console.log(array);
var reg = /\d{5}/g;
var arr = reg.exec(str);
while (arr != null){
console.log(arr[0]);
arr = reg.exec(str);
}

//提取日
var str = "2016-06-29";
var arr = str.match(/(\d{4})--/g);
//正则表达式对象.3)

//提取邮箱中的信息
var str = '[email protected]';
var arr = str.match(/([0-9a-zA-Z_.-]+)@(([.][a-zA-z]+){1,2})/);
console.log(RegExp.2);
console.log(RegExp.$3);

//文字替换
var str = '今天真是美好的一天,遇到美好的事情,遇见美好的人儿!';
str = str.replace(/美好/g,'糟糕');
console.log(str);

//字符串剔除空格
var str = ' 天真好, 出去打球啊 ';
console.log(str);
str = str.trim(''); //只能去掉两端的空白符
console.log(str);
//使用正则剔除空格
var str = ' 天真好, 出去打球啊 ';
str = str.replace(/\s+/g,''); //\s空白符
console.log(str)

//字母替换
var str = 'aAbaAbaAbACa';
str = str.replace(/[a]/gi,'S');
console.log(str)

你可能感兴趣的:(正则表达式的学习与总结)