正则表达式

正则对象的方法

  • 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次