正则表达式特殊字符
1.边界符
2.字符类
**概念: **[ ]表示有一系列的字符可供选择,只要匹配其中一个就可以
// 1. 匹配字符是否是a-z的其中一个
var rg = /^[a-z]$/ ;
console.log(rg.test('a')); //true
console.log(rg.test('s')); //true
console.log(rg.test('z')); //true
console.log(rg.test('ab')); //false
console.log(rg.test('xbc')); //false
// 2. 字符组合
var rg = /^[a-zA-Z0-9_-]$/;
// 匹配 a-z 或者 A-Z 或者 0-9 或者 _ 或者 - 中的任意一个字符
console.log(rg.test('a')); //true
console.log(rg.test('X')); //true
console.log(rg.test(8)); //true
console.log(rg.test('_')); //true
console.log(rg.test('-')); //true
console.log(rg.test('!')); //false
console.log(rg.test('ab')); //false
// ^在[]中表示 取反
var rg = /^[a-zA-Z0-9]$/ // 匹配除了 a-z 和 A-Z 和 0-9的字符
console.log(rg.test('a')); //false
console.log(rg.test('B')); //false
console.log(rg.test('7')); //false
console.log(rg.test('xx')); //false
console.log(rg.test('!')); //true
console.log(rg.test('_')); //true
3.量词符
作用: 量词符用来设定某个![在这里插入图片描述](https://img-blog.csdnimg.cn/0a3608a36d9d4f3c95bca786b2080c22.png)
模式出现的次数
// 量词符: 用来设定某个模式出现的次数
var reg = /^a$/;
console.log(reg.test('a')); //true
console.log(reg.test('aa')); //false
// 1. * 相当于 >= 0 可以出现0次或者很多次
var reg = /^a*$/;
console.log(reg.test('')); //true
console.log(reg.test('a')); //true
console.log(reg.test('aa'));//true
console.log(reg.test('aaaaaa')); //true
// 2. + 相当于 >= 1 可以出现1次或者很多次
var reg = /^a+$/;
console.log(reg.test('')); //false
console.log(reg.test('a')); //true
console.log(reg.test('aa'));//true
console.log(reg.test('aaaaaa'));//true
// 3. ? 相当于 1 || 0
var reg = /^a?$/;
console.log(reg.test('')); //true
console.log(reg.test('a')); //true
console.log(reg.test('aa'));//false
console.log(reg.test('aaaaaa'));//false
// 4. {3 } 就是重复3次
var reg = /^a{3}$/;
console.log(reg.test('')); //flase
console.log(reg.test('a')); //false
console.log(reg.test('aa'));//false
console.log(reg.test('aaaaaa'));//false
console.log(reg.test('aaa')); //true
// 5. {3, } 大于等于3
var reg = /^a{3,}$/;
console.log(reg.test('')); //false
console.log(reg.test('a')); //false
console.log(reg.test('aa'));//false
console.log(reg.test('aaaaaa'));//true
console.log(reg.test('aaa')); //true
// 6. {3, 16} 大于等于3 并且 小于等于16
var reg = /^a{3,6}$/;
console.log(reg.test('')); // false
console.log(reg.test('a')); // false
console.log(reg.test('aa'));// false
console.log(reg.test('aaaaaa')); //true
console.log(reg.test('aaa')); //true
console.log(reg.test('aaaa')); //true
// 量词设定某个模式出现的次数
var reg = /^[a-zA-Z0-9_-]{6,16}$/;
// {a,b} 中间不能有空格
// {6,16} 正确写法
// {6, 16} 错误写法
4.用户名验证 案例
功能需求
分析
注: 分析第二个书写错误
正确: /^[a-zA-Z0-9_-]$/
<style>
span {
color: #aaa;
font-size: 14px;
}
.right {
color: rgb(15, 246, 15);
}
.wrong {
color: red;
}
</style>
</head>
<body>
<input type="text" class="uname"><span> 请输入用户名</span>
<script>
var reg = /^[a-zA-Z0-9_-]{6,16}$/;
var uname = document.querySelector('.uname');
var span = document.querySelector('span');
// 当用户离开input输入框时执行次函数
uname.onblur = function () {
console.log('输入的值为:'+uname.value);
//判断用户名是否符合规范
if(reg.test(this.value)) {
console.log('正确');
span.className = 'right';
span.innerHTML = '用户名输入正确';
} else {
console.log('错误');
span.className = 'wrong';
span.innerHTML = '用户名输入错误';
}
}
// console.log(reg.test('yanle555')); // true
// console.log(reg.test('yanle')); // true
// console.log(reg.test('dt_daling')); // true
// console.log(reg.test('XXX!@')); //false
// console.log(reg.test('aaax')); //flase
// console.log(reg.test('aaaa11_')); //true
</script>
</body>
</html>
5.预定义类
表示: 某些常见模式的简写方式
6.正则表达式的参数
/表达式/[switch]
switch 有3种值
g: 全局匹配
i: 忽略大小写
gi: 全局匹配+忽略大小写
// 敏感词替换效果
// .replace(被替换者,替换者)
将 激情和gay字符串 在全局中 替换为 **
div.innerHTML = str.replace(/激情|gay/g,'**');