代码改变世界

正则和字符串

2019-11-10 16:44  张海峰999  阅读(185)  评论(0编辑  收藏  举报

 

1.

字符集* , 字符集? , 字符集+

eg:abc*d    匹配abcd  abccd  abccccd 等,   *代表前面字符可以不出现,也可以出现一次或多次(0次,1次,多次)

abc?d     匹配abd  abcd     ?代表前面字符最只出现一次或0次(0次,1次)

abc+d     匹配abcd  abccd  abcccd等      +代表前面的字符至少出现一次(1次,多次)

 

2.

[0-9]   0,1,2,3,4,5,6,7,8,9

 [a-z]    匹配小写英文字

//strsubing
// 0123456789012
var str = 'adgfcbhjklada';
// 从第三个开始到第7个结束 不包含7
var str1 = str.substring(3, 7);
//省略第二个参数表示从第三个开始直到结尾
var str3 = str.substring(3)
// 从低三个开始直到str.length-3
var str5 = str.substring(3, str.length - 3)

// strsub
// 从第三个开始 后面的七个元素
var str2 = str.substr(3, 7)
//省略第二个参数表示从第三个开始直到结尾
var str4 = str.substr(3)
// 从低三个开始直到str.length-3
var str6 = str.substr(3, str.length - 3)
console.log(str1, str2, str3, str4, str5, str6)


// indexof indexOf('kw',[formi])
// 012345678901234567890123456
var word = "you see see you,one day day";
// 返回关键字所在的下标
var index = word.indexOf("see")
console.log(index) //4
//返回see下一个位置的下标
index = word.indexOf("see", index + 1)
console.log(index) //8
// 找不到则返回-1
index = word.indexOf("hhh")
console.log(index) //- 1

// lastIndexOf
index = word.lastIndexOf("you")
console.log(index) //12
index = word.lastIndexOf("see", index - 'see'.length)
console.log(index) //24

 

// search 找到第一个符合正则规范的位置 找不到返回-1
var kw = "You see see you,one day day";
index = kw.search(/you/ig)
console.log(index)


// match 使用正则获取关键词,返回关键词的内容 如果没有则返回null
var arr = "You see see you,one day day";
index = arr.match(/bo/ig);
console.log(index) //null

 


// RegExp
// var reg = /no/ig; // 直接创建
var arr1 = 'You see see you,one day day';
var arr2 = ["see", "you"];
// new关键字创建
var reg = new RegExp(arr2.join("|"), 'ig');
console.log(arr1.match(reg))
var reg1 = /you/ig;

// test()
var arr3 = reg1.test(arr1)
console.log(arr3) // 返回boolean类型的值

 

// exec()

var arr4 = "you see see you,one day day";
var reg2 = /([y|s|o|d])([o|e|a|n])([e|u|y])?/ig;
console.log(reg2.exec(arr4));
console.log(reg2.exec(arr4));
console.log(reg2.exec(arr4));
// console.log(reg2.exec(arr4));
var arr5 = reg2.exec(arr4)
console.log(arr5[0], arr5[2], arr5.index, reg2.lastIndex) //you o 12 15

[A-Z]    匹配大写英文字母

[0-9a-zA-Z]    匹配以上三种情况

[\u4e00-\u9fa5]    匹配汉字

 

3.

\d  匹配以为数字    ===>>  [0-9]

\w  匹配以为数字,字母或_   

\s 匹配任何空白字符,包括空格、制表符、换页符等等

. 匹配所有的字符

 

4.量词

{n}    n为非负整数,匹配前面的字符n次     abc{2}  ===> abcc

{n,}   n为非负整数,匹配前面的字符至少出现n次   abc{3,} ===>>abccc

{n.m}  n,m均为非负整数n<=m   匹配前面的字符至少出现n次至多出现m次    abc{2,4} =>>>abcc abccc abcccc

 

5.特殊字符

^  匹配输入字符串的开始位置  ===>>>[^abc] 匹配除abc以外的字符

$ 匹配输入字符串的结束位置

\  将下一个字符 匹配 成为一个特殊字符或原义字符

|  =>>>  x|y 匹配x或y

 

 

 

常用正则

qq号码[1-9]\d{4,11}

qq邮箱  [1-9]\d{4,11} @[q][q].(com|cn)

网易邮箱  [a-zA-Z1-9]@[1][6][3].(com|cn)

邮政编码  [1-9][0-9]{5}

身份证号   [1-9]\d{5}((18|19)\d{2}|([2][0][0-1][0-9]))((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]

手机号码  (\+86|0086)?\s*1[3456789]\d{9}

密码  [A-Z][a-z0-9A-Z]{5,17}首字母大写