正则表达式
正则表达式(正则对象)
用来匹配一段字符串中的一些内容
使用场景
基本全部用于注册页面, 用户审核和约束用户输入的信息
创建和使用
- 使用new 关键字来创建
var reg = new RegExp(/表达式/);
- 使用字面量的方式来创建
var reg = /表达式/;
正则类别
- 简单类
var reg = /abc/;
表示匹配的字符串中,需要含有abc字符
常用检测方法 正则对象.test(需要审核的字符串);
返回一个布尔类型的值
console.log(reg.test("wsafdafb,mkmc"));
[ ] : 不带中括号表示一个整体,需要完全匹配
带上中括号表示任意一个匹配即可
var reg = /[abc]/;
console.log(reg.test("afkkbkkc"))
- 反向类
表示含有 除了abc以外的任意字符 即可
var reg = /[^abcv]/;
console.log(reg.test("abcccv"));
- 范围类
- 小写字符的范围
var reg = /[a-z]/;
表示 含有 a到z之间任意字符 即可 - 大写字符的范围
var reg2 = /[A-Z]/;
表示含有 A到Z之间任意字符 即可 - 数字的范围
var reg3 = /[0-9]/;
表示含有 0到9之间任意字符 即可 - 混合范围
var reg4 = /[a-zA-Z0-9]/;
空格也算字符串,正常些即可不需要空格
- 小写字符的范围
- 预定义类
- . 匹配换行符以外的任意字符
- \w 匹配单词字符(所有的数字字母下划线) [a-zA-Z0-9_]
- \W 匹配非单词字符 [^a-zA-Z0-9_]
- \d 匹配所有数字 [0-9]
- \D 匹配所有非数字 [ ^0-9]
- \s 匹配任意的空白字符
- \S 匹配任意非空白字符
- \b 匹配是否到了单词的边界 (开始或者结束)
- \B 匹配是否没到单词的边界 (开始或者结束)
- 字符转义
将符号自带的其他含义去掉,只使用符号本身
在符号前 加
例如: \. - 或 |
var reg2 = /a|b/; 等同于 [ab]
var reg2 = /ab|bc/; - ^ 匹配字符串的开头
var reg3 = /^abc/;
console.log(reg3.test("abc"));
- $ 写在正则最后面, 匹配字符串结尾
var reg4 = /af$/;
console.log(reg4.test("nihaodaf"));
- ^ 和 $ 同时使用时, 表示严格模式。 只能有这些指定内容
var reg5 = /^abc$/;
console.log(reg5.test("abcc"));
- 量词
- 量词只有一个数字时, 表示 最少位数
var reg6 = /\d{4}/;
- 使用严格模式时,不再是最少位置,而是指定位数
var reg6 = /^\d{4}$/;
- 量词有两个数字时, 表示一个指定的范围
注意: 需要使用严格模式, 否则是 包含指定范围的数字
var reg6 = /\d{4,6}/;
正则常见的修饰符
- + 匹配1个到多个
- * 匹配0个到多个
- ? 匹配0个或1个
replace(替换目标,新的内容)
var s = "ding guang";
console.log(s.replace(/d/,"D"));
匹配模式
- g - global : 全局匹配
var reg7 = /a/g;
- i - ignoreCase: 忽略大小写
var reg8 = /a/i;
- m – : 多行识别匹配
var reg7 = /a/m;
match 提取符合正则的内容
stringObj.match(rgExp)
stringObj:必选项。对其进行查找的String对象或字符串文字。
RgExp:必选项。为包含正则表达式模式和可用标志的正则表达式对象。也可以是包含正则表达式模式和可用标志的变量名或字符串文字。
console.log(s7.match(reg7));
如果match方法没有找到匹配,返回 null。 如果找到匹配返回一个数组并且更新全局 RegExp 对象的属性以反映匹配结果。
过滤敏感词
函数用来接收敏感词
内部去操作敏感词
var s8 = "那年她18岁,我也18岁。手牵着手,大喊道:生命太低贱";
var reg8 = /生命|低贱/g;
s8 = s8.replace(reg8,function(s){
var str2 = "";
for(var i = 0; i < s.length; i++){
str2 += "*";
}
return str2;
});
console.log(s8);