分析常用的正则表达式

169 阅读2分钟

一、介绍正则表达式:

   正则表达式描述了一种字符串匹配的模式,判断字符串是否符合规则,可以进行筛选一个串,取出我们想要的字符串。例如:

从1234fasd中取出数字或字母,从aaddfhhjsuw筛选出相同的字母并进行输出

首先两个//表示正则,/\d/中间\d就是表示正则的规则,符合\d的字符就会被发现,在应用

word.match(/d+/)就是将word中符合的揪出来

match() 方法可在字符串内检索指定的值,把符合规则的字符都截取出来作为一个数组返回出来。

/\d+/.test(word):这个.test时正则时在一个文本中以一定的规则进行查找,查到了就返回true,反之false.。

二、正则表达式的常用用法:

例1:                  word = 123-145-122        

要求:选出数字。  /d匹配所有的数字,首先为/\d/,但是我们想匹配的结果为123,123中的数字不是只有一个,所以我们要匹配一次或多次,然后就为/\d+/,如果匹配0次或多次,那就就将+改为?

使用word.match(/\d+/)得到的为:

也可以将\d改为[0-9]

它只匹配了一个123,然后就停止匹配,并不是我们想要的数组,最后我们要加上(/\d+/g),g表示整个字符串进行匹配,得出

与\d相似的:

\w:匹配字母、数字、下划线。等价于 [A-Za-z0-9]还有各种\的字符

例2 :                word = kk-45-op-dhh

要求:选出字母   match(/[a-z]+/g)

匹配 [...] 中的所有字符,[ ]中可以加 \s和\S的效果都是是匹配所有空白符,包括换行

例****3:           测试字符串是否符合格式 xxxx-xxx-xx。

x代表的数字。变式为:四个数字-三个数字-两个数字

得出:

var reg = /(\d{4})-(\d{3})-(\d{2})/;
var dateStr = '2018-043-18';
reg.test(dateStr);  //true
console.log(RegExp.$1,RegExp.$2,RegExp.$3);  

{n}中n 是一个非负整数,匹配确定的 n 次,例如,p{2} 不能匹配 "pop" 中的 'p',但是能匹配 ppg 中的两个 pp。

例4:         word =    aaddfhhjsuw

要求:要求将相同的字符进行截取出来,例如aa dd hh

str.match(/(.)\1+/g);  这里的()表示分组,而\1表示与前面的分组一样,一个.表示随便匹配,当第一个配成aa 表示后面的跟它一样都是字母相同的才会匹配出来。

也可以将.换为[a-z]

最后分享一个关于正则表达式的题目:

给一个'aadsdjfwuhh'的字符,将相同的字符进行输出来。

function duplicateCount(text) {  
  var str = text.toLowerCase().split('').sort().join('');         
  var arr = str.match(/(.)\1+/g);//\1 之前匹配到的第几个小组    
return arr;}

var str = text.toLowerCase().split('').sort().join('');可以将aadsdjfwuhh变为aaddfhhjsuw

好,文章就到这了!