前端学习笔记js篇(4)

正则表达式

正则表达式提供一种字符匹配模式,用于匹配符合模式的字符串,对字符串进行筛选,替换等操作

正则表达式中有三种常用的元素:修饰符,匹配符,方法,

正则均是以/开始,以/结尾的

正则定义的方式为:

var reg = new RegExp("/\D/")

var reg = /\D/

以第二种方式居多,此处暂时不用考虑/\D/是什么意思,只需知道参数的位置和是否需要引号

修饰符

g 全局匹配,匹配整个字符串,如果使用默认则匹配到第一个字符串后就返回,不继续匹配了

i 忽略大小写

m 多行匹配

匹配符

匹配符用于指定匹配规则,常用的匹配符如下:

\:读作反斜杠,为转义字符

^: 匹配以。。。开头的字符

$:匹配以。。。结尾的字符

*:匹配前面紧邻的子表达式0次或多次

+:匹配前面紧邻的子表达式1次或多次

{n,m}:匹配前面紧邻的子表达式n次到m次

\d:匹配数字

\D:匹配非数字

\w:匹配字符

\W:匹配非字符

\b:匹配独立部分

\B:匹配非独立部分

():分组符

[]:匹配其中规则的任意一个

|:或

方法

正则中常用的方法有以下几种:

test()用于判断是否存在匹配字符串,有则返回true,无则返回false

var str = '123456s'
var reg = /\D/
console.log(reg.test(str))

search() 匹配字符串,并返回匹配到的字符串的开始位置(索引),没匹配到则返回-1

var str = 'abcdef';
var reg = /b/;
console.log(str.search(reg))

match() 查找字符串中符合规则的内容,成功则返回内容(保存到一个数组),失败则null

var str = 'dahdsa123adasda456adad789'
var reg = /\d/g
console.log(str.match(reg))

replace()查找字符串中符合规则的内容,并替换成指定字符串,但是不能替换相应的字符串长度;替换内容也可以是一个函数

var str = '你好张三:你是123'
var reg = /你好|你是/g
console.log(str.replace(reg, 'hello'))

下面是一些常见的正则表达式

转译字符的用法

var str = '2018/7/11'
var reg1 = /\d\/+/g // 匹配一个数字,一个或多个/(此处\将/转译为了有效字符,),全局匹配
var reg2 = /(\d\/)+/g // 匹配一个数字和一个/,整体一个或多个,全局匹配
var reg3 = /(\d)+(\/)+/g// 匹配一个或多个数字,一个或多个/,全局匹配
console.log(str.match(reg1))
console.log(str.match(reg2))
console.log(str.match(reg3))

匹配HTML字符串

var str = '<div class="b">hahahah </div>'
var reg1 = /<[^>]+>/ // 匹配一个<,一个或多个任意不是>的字符,一个>
var reg2 = /<[\w\W]+>/g // 匹配一个<,一个或多个任意字符,一个>
console.log(str.match(reg1))
console.log(str.match(reg2))

匹配独立字符串

var str1 = 'onetwo'
var str2 = 'one two'
var reg = /one\b/ //匹配独立的one
console.log(reg.test(str1))
console.log(reg.test(str2))

查找一个字符串中重复次数最多的字符

var str = 'assssjdssskssalsssdkjsssdss';
var arr = str.split('');
str = arr.sort().join(''); 
var value = '';
var index = 0; 
var re = /(\w)\1+/g;  //匹配字符,且重复这个字符,重复次数至少一次。
str.replace(re,function(a,b){   
    if(index<a.length){
          index = a.length;
          value = b; 
    }

}); 
consol.log('最多的字符:'+value+',重复的次数:'+index);

判断字符串是否是qq

var qq = '1465799166'
var reg = /^[1-9]\d{4,11}$/ // 匹配1~9开头,4到11位数字结尾 
console.log(reg.test(qq))

去首尾空格

var str1 = '    abc    '
var reg = /^\s+|\s+$/ // 匹配以一个或多个空格开头或一个或多个空格结尾
var str2 = str1.replace(reg,'')
console.log(str1)
console.log(str2)





猜你喜欢

转载自blog.csdn.net/m0_37782372/article/details/81002135