JS正则表达式的介绍与使用

正则表达式 : RegExp (Regular Expression)

基本数据类型

String
Number
Boolean
undefined
null

复杂数据类型

array
object
function
RegExp(正则)

正则的声明方式 :

var reg1 = new RegExp();
var reg2 = /“男|女”/;

数组 :
var arr = new Array();
var arr = [];

和数组的比较:
两者相似

正则里面的test方法

语法 :
正则对象.test(“需要检测的字符串”)
如这个检测的字符串满足正则对象的要求, 就返回true, 否则返回false

   var reg = /张|李/ ;
   console.log(reg.test("张三在吃李子"));					//true
   console.log(reg.test("张三在吃桃子"));					//true
   console.log(reg.test("李四在吃桃子"));					//true
   console.log(reg.test("李四在吃李子"));					//true
   console.log(reg.test("王五在吃桃子"));					//false

预定义类 :

就是RegExp 中已经实现给他赋予了特殊含义的字符

  1. " . " ( [ ^\n\r]) 除了回车和换行以外的任意字符
    \r :return 回车
    \n:newline 换行
console.log(/./.test("\r"));      //false
console.log(/./.test("\n"));	 //false
console.log(/./.test("\r\n"));	//false
console.log(/./.test("\r1"));  //true
console.log(/./.test("efdkslgadjkl"));  //true
console.log(/./.test("12344\rfeds"));	//true
  1. \d : [0-9] 数字字符
    \D : 非数字字符

  2. \s :不可见字符 (包括以下)
    \f :匹配换页符
    \r :匹配回车符
    \n:匹配换行符
    \t :匹配制表符 Tab
    \v:匹配垂直字符

    \S :可见字符

  3. \w :所有的数字 、字母、 _
    \W :非数字 、字母、 _

  4. \b:匹配一个单词边界,即字和空格之间的位置
    \B:非单词边界匹配

或、和 类:

| 、()

console.log(/zhangsan/.test("zhangzhangsansan"));   //true
console.log(/zhangsan/.test("zhangzhang.sansan"));	//false
console.log(/zhangsan/.test("zhangzhang.sansan"));	//false
console.log(/zhangsan/.test("zhangzhangzhang"));	//false
console.log(/zhangsan/.test("zhansanzhang"));		//false
console.log(/zhang|san/.test("zhangzhangsansan"));	//true
console.log(/zhang|san/.test("zhangzhang.sansan"));	//true
console.log(/zhang|san/.test("zhangzhang.sansan"));	//true
console.log(/zhang|san/.test("zhangzhangzhang"));	//true
console.log(/zhang|san/.test("zhansanzhang"));		//true

// zhang  zhong  san
console.log(/zh(a|o)ng|san/.test("zhangzhangsansan")); 	//true
console.log(/zh(a|o)ng|san/.test("zhongzhong.sansan"));	//true
console.log(/zh(a|o)ng|san/.test("zhangzhang.sansan"));	//true
console.log(/zh(a|o)ng|san/.test("zhongzhangzhang"));	//true
console.log(/zh(a|o)ng|san/.test("zhansanzhang"));  	//true

简单类:

[ ]

console.log(/[abc]/.test("a"));	//true
console.log(/[abc]/.test("b"));	//true
console.log(/[abc]/.test("adsfasdcv"));	//true

负向类:

[ ^ ]

console.log(/[^abc]/.test("aaaaabbb"));		//false
console.log(/[^abc]/.test("abdcdfsv"));		//true
console.log(/[^abc]/.test("abc"));			//false

范围类:

[ a-z ] [A-Z] [0-9] [0-9a-zA-Z]

边界 :

^ 匹配行或者字符串的起始位置

console.log(/^\d/.test("12345sdahjfdsljck"));	//true
console.log(/^\d/.test("ssss345sdahjfdsljck"));	//false
console.log(/^8.ddd/.test("8888879798327fejdksdddddddddddd"));//false
console.log(/^8+ddd/.test("8888879798327fejdksdddddddddddd"));//false

严格匹配

/^ /
以什么开头
/$ /
以什么结尾

console.log(/^abc$/.test("abc"));  //true
console.log(/^abc$/.test("abcabcabc"));	//false
console.log(/^abc$/.test("aaaabbbccc"));	// false
console.log(/^abc$/.test("aaaabbbccc123"));	//false

量词

{n}:必须匹配(出现)n次

console.log(/ [/d]{2} /.test("aaaabbbccc123"));	//false

{n,} :至少匹配(出现)n次

console.log(/[0-9]{2,}/.test("abbb123232414514"));	//true

{n, m} :最少匹配(出现)n次,最多m次

console.log(/[0-9]{2,10}/.test("abbb123232414514"));	//true

*:可有可无,多了不限

console.log(/\d*/.test("abbb123232414514"));	 //true

+:至少匹配(出现)1次 {1,}

console.log(/\d/.test("sadasd213123"));	//true

?:最多匹配一次,可有可无

console.log(/\d?/.test("sadasd213123"));	//true

其他符号

g:
全局变量
i:
忽略大小写

字符形式的正则表达式需要对特殊字符进行转义

.、 *、+、()、$、/、\、?、[ ]、^、{ }
如何转义:在这些符号前面加上 \ 。

String里面需要使用到的正则表达式的几个方法:

1.replace(参数1,参数2):参数1为正则表达式,参数2为替换的字符串
替换reg匹配字符串

reg.replace(/javascriipt/,"javascript");

2.split():按reg匹配的值拆分成数组。参数是使用的分隔符。

"123,456,789".split(",")   //["123","456","789"]

3.match():返回reg匹配结果组成的数组。

"1psad2saser3".match(/\d+/);    //["1","2","3"]

4.search():返回reg匹配的第一个字符串位置,没有则返回-1。

"javascript".search(/script/);  //4

练习

手机号码:

console.log(/(\+86|0086)|[356789]\d{9}/.test(+86135692547896));

邮箱:

console.log(/\w+@[0-9a-zA-Z]{2,}(.[a-zA-Z0-9]{2,3}){1,2}/.test("[email protected]"));
发布了26 篇原创文章 · 获赞 5 · 访问量 1056

猜你喜欢

转载自blog.csdn.net/weixin_45060872/article/details/104429920
今日推荐