1、正则表达式的使用三步骤
-
.定义正则表达式对象
-
定义待校验的字符串
-
校验
2、创建正则表达式对象
-
对象形式:
var reg = new RegExp("正则表达式")
当正则表达式中有"/"时,使用这种形式。
-
直接量形式:
var reg = /正则表达式/
一般使用这种声明方式。
3、验证方式
(1)模式验证:校验字符串(str)中是否包含reg字符串
<script language="JavaScript">
var reg = /abc/;//new RegExp("abc");
var str = "abcdefg";
var flag = reg.test(str);//true
console.log(flag);
</script>
(2)匹配读取:读取字符串中的所有’o’
<script language="JavaScript">
//g表示全文查找,如果不使用g,则只能找到第一个匹配的内容
var reg = /o/g;//new RegExp("abc");
var str = "abcodefgoddotyt";
var arr = str.match(reg);//(3) ['o', 'o', 'o']
console.log(arr);
</script>
(3)匹配替换:将字符串中的第一个’o’替换成’_’
<script language="JavaScript">
var reg = /o/;//new RegExp("abc");
var str = "abcodefgoddotyt";
str = str.replace(reg,'_');
console.log(str);//abc_defgoddotyt
</script>
4、正则表达式的匹配模式
(1)全文查找-g
如果不使用g
对正则表达式对象进行修饰,则使用正则表达式进行查找时,仅返回第一个匹配;使用后,返回所有匹配。
<script language="JavaScript">
//g表示全文匹配,如果不使用g,则只能找到第一个匹配的内容
var reg = /o/g;//new RegExp("abc");
var str = "abcodefgoddotyt";
str = str.replace(reg,'_');
console.log(str);//abc_defg_dd_tyt
</script>
(2)忽略大小写-i
如果不使用i
对正则表达式对象进行修饰,则使用正则表达式进行查找时,区分大小写;使用后,不区分大小写。
<script language="JavaScript">
var reg = /o/g;//new RegExp("abc");
var str = "abcodefgOdt";
str = str.replace(reg,'_');
console.log(str);//abc_defgOdt
</script>
对比代码:
<script language="JavaScript">
//g表示全文匹配,如果不使用g,则只能找到第一个匹配的内容
//i表示忽略大小写匹配
var reg = /o/gi;//new RegExp("abc");
var str = "abcodefgOdt";
str = str.replace(reg,'_');
console.log(str);//abc_defg_dt
</script>
(3)多行查找-m
不使用多行查找模式m
,目标字符串中不管有没有换行符都会被当做一行。
<script language="JavaScript">
var reg = /hello$/;//$表示以hello结尾
var str = "hello\nworld";
var flag = reg.test(str);
console.log(flag);//false
</script>
对比代码:
<script language="JavaScript">
var reg = /hello$/m;//$表示以hello结尾
var str = "hello\nworld";
var flag = reg.test(str);
console.log(flag);//true
</script>
g
、i
、m
可以组合使用,不区分先后顺序如:
var reg = /abc/gim; var reg = new RegExp("abc",gim)
5、元字符
在正则表达式中被赋予特殊含义的字符,不能被直接当做普通字符使用。如果要匹配元字符本身,需要对元字符进行转义,转义的方式是在元字符前面加上“\”。
(1)常用的元字符
元字符 | 说明 |
---|---|
. | 匹配除换行字符以外的任意字符 |
\w | 匹配字母或数字或下划线等价于[a-zA-Z0-9_] |
\W | 匹配任何非单词字符,等价于A-Za-z0-9 |
\s | 匹配任意的空白符,包括空格、制表符、换页符等。等价于[\f\n\r\t\v] |
\S | 匹配任何非空白空白符。等价于\f\n\r\t\v |
\d | 匹配数字。等价于[0-9] |
\D | 匹配一个非数字字符。等价于0-9 |
\b | 匹配单词的开始或结束 |
^ | 匹配字符串的开始,但在[]中使用表示取反 |
$ | 匹配字符串的结束 |
(2)举例
\w
<script language="JavaScript">
var reg = /\w/gim;//$表示以hello结尾
var str = "a>b_c|u\nt?h";
//str = str.replace(reg,"A");
//console.log(str);//A>AAA|A\nA?A
var flag = reg.test(str);
console.log(flag);//true
</script>
\W
<script language="JavaScript">
var reg = /\W/gim;//$表示以hello结尾
var str = "a>b_c|u\nt?h";
str = str.replace(reg,"A");
console.log(str);//aAb_cAuAtAh
</script>
\s
<script language="JavaScript">
var reg = /\s/gim;
var str = "a>b_c|u\nt?h";
str = str.replace(reg,"A");
console.log(str);//a>b_c|uAt?h
</script>
\d
<script language="JavaScript">
var reg = /\d/gim;
var str = "3>b";
str = str.replace(reg,"A");
document.write(str);//A>b
</script>
\D
<script language="JavaScript">
var reg = /\D/gim;
var str = "3>b";
str = str.replace(reg,"A");
document.write(str);//3AA
</script>
\b
<script language="JavaScript">
var reg = /\b/gim;
var str = "hello world";
str = str.replace(reg,"A");
document.write(str);//AhelloA AworldA
</script>
^
<script language="JavaScript">
var reg = /^a/gim;
var str = "a hello world b";
str = str.replace(reg,"A");
document.write(str);//A hello world b
</script>
$
<script language="JavaScript">
var reg = /b$/gim;
var str = "a hello world b";
str = str.replace(reg,"A");
document.write(str);//a hello world A
</script>
6、字符集合
语法格式 | 示例 | 说明 |
---|---|---|
[字符列表] | 正则表达式:[abc] 含义:目标字符串包含abc中的任何一个字符 目标字符串:plain 是否匹配:是 原因:plain中的“a”在列表“abc”中 | 目标字符串中的任意一个字符出现在字符列表中就算匹配 |
[^字符列表] | 正则表达式:[^abc] 含义:目标字符串包含abc以外的任何一个字符 目标字符串:plain 是否匹配:是 原因:plain中包含“p”、“l”、“i”、“n” | 匹配字符列表中未包含的任意字符 |
[字符范围] | 正则表达式:[a-z] 含义:所有小写英文字母组成的字符列表 正则表达式:[A-Z] 含义:所有大写英文字母组成的字符列表 | 匹配指定范围内的任意字符 |
举例:
(1)[]表示集合,表示有a或者b或者c都匹配,如果没有[],表示必须精确匹配abc
<script language="JavaScript">
var reg = /abc/gim;
var str = "abhelloworldc";
str = str.replace(reg,"A");
document.write(str);//abhelloworldc
</script>
对比代码:
<script language="JavaScript">
var reg = /[abc]/gim;
var str = "abhelloworldc";
str = str.replace(reg,"A");
document.write(str);//AAhelloworldA
</script>
(2)[^]
中的“^”表示取反
<script language="JavaScript">
var reg = /[^abc]/gim;
var str = "abhelloworldc";
str = str.replace(reg,"A");
document.write(str);//abAAAAAAAAAAc
</script>
(3)[ - ]中的“-”表示范围
<script language="JavaScript">
var reg = /[a-g]/gim;
var str = "abhelloworldc";
str = str.replace(reg,"A");
document.write(str);//AAhAlloworlAA
</script>
7、出现次数
代码 | 说明 |
---|---|
* | 出现零次或多次 |
+ | 出现一次或多次 |
? | 出现零次或一次 |
{n} | 出现n次 |
{n,} | 出现n次或多次 |
{n,m} | 出现n到m次 |
举例:
{n}
<script language="JavaScript">
var reg = /[l]{2}/gim;
var str = "ablllhelloworldc";
str = str.replace(reg,"_");
document.write(str);//ab_lhe_oworldc
</script>
{n,m}
<script language="JavaScript">
var reg = /[l]{2,5}/gim;
var str = "ablllhelloworldc";
str = str.replace(reg,"_");
document.write(str);//ab_he_oworldc
</script>
8、在正则表达式中表达"或者"
使用符号:|
<script language="JavaScript">
var reg = /a|d/gim;
var str = "abcdefg";
str = str.replace(reg,"_");
document.write(str);//_bc_efg
</script>
9、常用正则表达式
需求 | 正则表达式 |
---|---|
用户名 | /^[a-zA-Z_][a-zA-Z_-0-9]{5,9}$/ |
密码 | /^[a-zA-Z0-9_-\@#&*]{6,12}$/ |
前后空格 | `/^\s+ |
电子邮箱 | /^[a-zA-Z0-9_.-]+@([a-zA-Z0-9-]+[.]{1})+[a-zA-Z]+$/ |