天天看点

JavaScript学习——正则表达式

正则表达式

正则表达式用于定义一些字符串的规则,计算机可以根据正则表达式来检查一个字符串是否符合规则,或者将字符串中符合规则的内容提取出来。

一、创建正则表达式对象

语法一:var 变量 = new RegExp(“正则表达式”,“匹配模式”);

语法二:var 变量 = /正则表达式/匹配模式;

  • 匹配模式:

    i --> 忽略大小写

    g -->全局匹配模式

  • 使用test()方法检查字符串是否符合规则
var reg2 = /a/;  //匹配字符串中有没有a
document.write(reg2.test("a"));  //true
           

二、正则表达式的语法

| 表示或,[]中的内容也表示或
	a或b或c:  a | b | c  ,[abc] 
	任意小写字母:[ a-z ]
	任意字母:[ A-z ]
	任意数字:[0-9]
	abc或adc或aec:a[ bde ]c
	
[^ ]表示除了
	除了数字:[^0-9]
	
量词,只对前面的一个内容起作用
	{}
		a连续出现n次:a{n}
		a出现m-n次:a{m,n}
		a出现m次以上:a{m}
	+ 至少出现一次 == {1,}
		a出现至少一次:a+
	* 0次或多次 == {0,}
	? 0次或一次 == {0,1}
		a出现0次或一次:a?
		
^ 表示开头
	以a开头:/^a/
$ 表示结尾
	以a结尾:/a$/
	
. 表示任意字符

\w 表示任意字母、数字、_
\W 除了字母、数字、_
\d 表示任意数字
\D 表示除了任意数字
\s 表示空格
\S 表示除了空格
\b 单词边界,标识独立的单词
	查找有没有单词child: / \bchild\b / 
\B 除了单词边界
           

正则语法:https://www.runoob.com/jsref/jsref-obj-regexp.html

三、支持正则表达式的String方法

split()

可以向split()方法传递一个正则表达式作为参数,split()方法会根据正则表达式的规则去拆分字符串,并放在数组中返回。

var str = "1a2b3c4d5F6E7O8";
document.write(str+"<br>"); //1a2b3c4d5F6E7O8
str = str.split(/[A-z]/);
document.write(str); //1,2,3,4,5,6,7,8
           

search()

可以向search()方法传递一个正则表达式作为参数,search()会在字符串中寻找符合规则的内容,并返回其第一次出现的位置索引

search()只能查找第一个符合规则的内容,设置g也没用

var str = "hello hello world";
//在字符串str中寻找e
document.write(str.search(/e/g)); //1
           

match()

可以向match()方法传递一个正则表达式作为参数,match()方法会在字符串中寻找一个或多个符合规则的内容,并将这些内容放在数组中返回。

默认情况下,match()方法找到第一个符合规则的内容后就不再检索,如果想要返回所有符合规则的内容,就将匹配模式改为g(全局检索模式)。

var str = "hello hello world";
//寻找字符串str中属于a-l的内容
document.write(str.match(/[a-l]/g));//h,e,l,l,h,e,l,l,l,d
           

replace()

replace()方法可以替换指定内容,默认替换第一个符合规则的内容

参数一:要替换的内容,可以是一个字符串,也可以是一个正则表达式

参数二:新内容

var str = "hello hello world";
//寻找l,替换为¥
document.write(str.replace(/l/g,"¥")); //he¥¥o he¥¥o wor¥d
           

练习

1.去除字符串中的空格

var str2 = "          he    ll   o          ";
console.log(str2); //          he    ll   o          
//去除所有空格
var result = str2.replace(/\s/g,""); //hello
//去除前面的空格
result = str2.replace(/^\s*/,""); //he    ll   o          
//去除后面的空格
result = str2.replace(/(\s*)$/,""); //          he    ll   o
console.log(result);
           

2.邮件正则

var reg = /^\w+@[a-z0-9]+\.[a-z]{2,5}$/;
document.write(reg.test("[email protected]")); //true