正则表达式
正则对象的方法
- test(str):判断字符串中是否具有指定模式的子串,返回结果是一个布尔类型的值;
- search(reg):与indexof非常类似,返回指定模式的子串首次出现的位置;
- match(reg):以数组的形式返回指定模式的字符串,可以返回所有匹配的结果
- replace(reg,‘替换后的字符’):把指定的模式的子串进行替换操作
- split(reg):以指定模式分割字符串,返回结果为数组
注解:reg是正则表达式规则,str是字符串。
子表达式(4444,8888查询)
var s='12312312333332222';
var reg=/(\d)\1\1\1/; //=>>>表示查询XXXX四个一样的数字
var z=s.match(reg);
console.log(z);
定位符(限定开头结尾)
例1:
- 第一位必须是1开头
- 第二位必须是3、4、7、8
- 第三位到底十一位是数字就行
var str'123111iuwhdaada18270314895;
var reg=/1[3478]\d{9}/;
var z=reg.test(str);
console.log(z);
正则表达式智慧到字符串中寻找是否有匹配的结果,有就是正确,而不考虑其字符串本身是否合法
定位符可以将一个正则表达式固定在一行的开始或结束
也可以创建只在单词的开始或结尾处出现的正则表达式
- ^(限定符:匹配输入字符串开始位置)
- $ :匹配输入字符串的结束位置
- \b :匹配一个的单词的边界
- \B :匹配非单词的边界
所以需要将例子1的reg改成var reg=/^1[3478]\d{9}$/;
var str'123111iuwhdaada18270314895;
var reg=/1[3478]\d{9}/;
var reg=/^1[3478]\d{9}$/;
console.log(z);
var str='i am zhangsan';
//am必须是一个完整的单词
var reg=/\bam\b/;
console.log(str.match(reg));
转义
因为//和.需要转义所以需要用到\来进行转义,下面是匹配网址
var t='http://zhuxing.akaka';
var reg=/\w+:\/\/\w+\.\w+/;
console.log(t.match(reg));
或者的用法
var str='ipad,iphone,iwatch,imac,ijr,iwer,iaaaa'
var reg=/\bi(pad|phone|watch|mac)\b/g;
console.log(str.match(reg);
预查
需求,将字符串里面的ing结尾的词根部分找出
预测就是不会返回预测的内容给你
var reg=/\b\w+(?=ing\b)/g;
var str='hello,when i am working,do not coming';
console.log(str.match(reg));//["work","com"]
需求,将字符串不是以ing结尾的单词找出来
var reg=/\b\w+(?!ing)\w{3}/g;
var str='hello,when i am working,do not coming';
console.log(str.match(reg));//["work","com"]
字符簇
字符簇 | 含义 |
\d | 匹配一个数字字符,与使用[0-9]等价 |
\D | 匹配一个非数字字符,还可以使用[^0-9] |
\w | 匹配包括下划线的任何字母数字下划线字符,还可以使用[0-9a-zA-Z_]_ |
\W | 匹配非数字字母下划线字符,还可以使用[^\W] |
\s | 匹配任何空白字符 |
限定符
*:匹配前面的子表达式零次或多次,0到多
+:匹配前面的子表达式一次或多次,1到多
?:匹配前面的子表达式零次或一次,0或1
{n}:匹配确定n次
{n,}:至少匹配n次
{n,m}:最少匹配n次且最多匹配m次