1. 构造函数
let reg=new RegExp();
let reg=/[a-z]/i;
2. 字符意义
i :执行对大小写不敏感的匹配
g :执行全局匹配
[ ] :区间,只要有一个符合就返回 true
[0-9] :0-9任意数字
[a-z] :任意a-z的小写字符
[A-Z] :任意A-Z的大写字符
^ :①在[ ]内时,表示取反 ② 指定的是一个字符串的开始
$ :指定的是一个字符串的结束 (限定字符/^ $/)
{N} :在一个字符组后加上{N} 就可以表示在它之前的字符组出现N次
{M,N} :重复区间,M是下界 而 N是上界
{N,} :重复次数没有边界
\s :匹配空白字符(空格、换行\n、回车\r), 空字符('')不可匹配
\S :匹配非空白字符(空格、换行\n、回车\r 、空字符'',返回false)
\b :匹配的是单词的边界,\bmaster\b 就仅匹配有边界的 master 单词
+ :等价于{1,}
* :等价于{0,}
图片来自 www.codejiaonang.com/\
3. 正则对象校验的方法
(1) test() 返回 true 或 false
(2) exec() 符合返回一个数组,不符合返回null
<script>
//匹配非数字、字母、下划线6-9次
let reg = /^\W{6,9}$/;
//匹配非空白字符1到多次
let reg2 = /^\S+$/;
//匹配空白字符0-1次
let reg3 = /^\s?$/;
console.log(reg3.test(' '));
</script>
⭐验证汉字 \u4e00-\u9fa5 速记:有事100,有酒罚我
<script>
//验证26个英文字母组成的字符串
var str = 'sdfghjty';
var reg = /^[a-zA-Z]+$/;
console.log(reg.test(str));
//验证由数字和26个英文字母组成的字符串
var str2 = 'fghjkl122';
var reg2 = /^[0-9a-zA-Z]+$/;
console.log(reg2.test(str2));
//验证由数字、字母、下划线组成的字符串
var str3 = '1f\_S';
var reg3 = /^\w+$/;
console.log(reg3.test(str3));
//验证汉字
var str4 = '千树万树梨花开';
var reg4 = /^[\u4e00-\u9fa5]+$/;
console.log(reg4.test(str4));
//给数字加上[]
var str = 'abc345efg';
strNew = [];
for (var i in str) {
console.log(/\d/.test(str[i]));
if (/\d/.test(str[i]) == true) {
strNew.push('[' + i + ']');
} else { strNew.push(str[i]) }
}
alert(strNew.join(''))
</script>
4. string类型支持正则的方法
<script>
// search()返回匹配到的第一个字符的下标,否则返回-1
// match() 返回一个数组(依赖于知否具有全局标志g) 否则返回null
// replace() 返回一个新的字符串
let str='afbggv12dfds';
let newStr=str.replace(/\d/g,'oo');
console.log(newStr);
// split(__,n) n表示返回数组元素个数 返回一个字符串数组 匹配不到会把整个字符串当作数组返回
let str2='a1vv5d1s';
console.log(str2.split(/\d/,3));
</script>