我是靠谱客的博主 陶醉未来,这篇文章主要介绍第十七章正则表达式正则表达式的作用定义正则表达式对象,现在分享给大家,希望可以做个参考。

正则表达式的作用

正则表达式的概念

正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。用我们自己的话来说: 正则表达式用来校验字符串是否满足一定的规则的公式

正则表达式的用途

所以正则表达式有三个主要用途:

  • 模式验证: 检测某个字符串是否符合规则,例如检测手机号、身份证号等等是否符合规范
  • 匹配读取: 将目标字符串中满足规则的部分读取出来,例如将整段文本中的邮箱地址读取出来
  • 匹配替换: 将目标字符串中满足标准的部分替换为其他字符串,例如将整段文本中的"hello"替换成"haha"

使用正则表达式的三个步骤

  • 定义正则表达式对象
  • 定义待校验的字符串
  • 校验 reg.test(str);

定义正则表达式对象

  • 对象形式:var reg = new RegExp("正则表达式")当正则表达式中有"/"那么就使用这种
  • 直接量形式:var reg = /正则表达式/一般使用这种声明方式
复制代码
1
2
3
4
var reg1 = /abc/; var reg2=new RegExp("abc");

匹配实例

匹配模式:

  • g 全局匹配
  • i 忽略大小写匹配
  • m 多行匹配
  • gim这三个可以组合使用,不区分先后顺序

匹配字符串abc

复制代码
1
2
3
4
5
6
7
8
<script language="JavaScript"> var reg = /abc/; // var reg=new RegExp("abc"); var str = "abcdefg"; var flag = reg.test(str); console.log(flag);//输出true </script>

将字符o替换为_

复制代码
1
2
3
4
5
6
7
8
9
<script language="JavaScript"> //var reg = /o/; var reg = /o/g ; // g表示匹配的模式,表示全文匹配 var str = "abcohijokl"; str = str.replace(reg,'_'); console.log(str); </script>
  • g表示全文匹配,也就是将所有的o都替换为_
  • 如果不带g,只会替换第一个o

将字符o或者O替换为_

复制代码
1
2
3
4
5
6
7
8
<script language="JavaScript"> var reg = /o/gi ; // g表示匹配的模式,表示全文匹配 ; i表示忽略大小写匹配 var str = "abcohijOkl"; str = str.replace(reg,'_'); console.log(str); </script>
  • i表示不区分大小写

多行匹配

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<script language="JavaScript"> //目标字符串1 var targetStr01 = 'HellonWorld!'; //目标字符串2 var targetStr02 = 'Hello'; //匹配以'Hello'结尾的正则表达式,没有使用多行匹配 var reg = /Hello$/; console.log(reg.test(targetStr01));//false console.log(reg.test(targetStr02));//true </script> <script language="JavaScript"> //目标字符串1 var targetStr01 = 'HellonWorld!'; //目标字符串2 var targetStr02 = 'Hello'; //匹配以'Hello'结尾的正则表达式,使用了多行匹配 var reg = /Hello$/m; console.log(reg.test(targetStr01));//true console.log(reg.test(targetStr02));//true </script>
  • m表示是多行匹配
  • $表示以什么结尾

元字符

在正则表达式中被赋予特殊含义的字符,不能被直接当做普通字符使用。如果要匹配元字符本身,需要对元字符进行转义,转义的方式是在元字符前面加上“”,例如:^

代码说明
.匹配除换行字符以外的任意字符。
w匹配字母或数字或下划线等价于[a-zA-Z0-9_]
W匹配任何非单词字符。等价于[^A-Za-z0-9_]
s匹配任意的空白符,包括空格、制表符、换页符等等。等价于[fnrtv]。
S匹配任何非空白字符。等价于[^fnrtv]。
d匹配数字。等价于[0-9]。
D匹配一个非数字字符。等价于[^0-9]
b匹配单词的开始或结束
^匹配字符串的开始,但在[]中使用表示取反
$匹配字符串的结束
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<script language="JavaScript"> var reg = /w/gim ; //w表示匹配字母或者数字或者下划线 var str = "a>b_c|dnf?g"; str = str.replace(reg,"A"); console.log(str);//A>AAA|A var flag = reg.test(str); console.log(flag);//true </script> <script language="JavaScript"> var reg = /W/gim ; //W表示匹配字母或者数字或者下划线之外的字符 var str = "a>b_c|dnf?g"; str = str.replace(reg,"A"); console.log(str);//aAb_cAdAfAg </script>
  • 对于元字符的匹配,只要有一个字符匹配上,就返回true
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<script language="JavaScript"> var reg = /s/gim ; // s表示匹配空白符,例如匹配 换行符、制表符... var str = "a>b_c|dnf?g"; str = str.replace(reg,"A"); console.log(str);//a>b_c|dAf?g </script> <script language="JavaScript"> var reg = /S/gim ; // S表示匹配空白符,例如匹配 换行符、制表符...之外的字符 var str = "a>b_c|dnf?g"; //AAAAAAA //AAA //因为有换行符的存在 str = str.replace(reg,"A"); console.log(str);//a>b_c|dAf?g </script>
复制代码
1
2
3
4
5
6
7
8
9
<script language="JavaScript"> //var reg = /d/gim ; // d表示匹配数字, D表示匹配非数字 var reg = /D/gim ; var str = "a>5"; str = str.replace(reg,"A"); document.write(str);//AA5 </script>
复制代码
1
2
3
4
5
6
7
8
<script language="JavaScript"> var reg = /b/gim ; // b表示匹配单词的开始和结束 var str = "hello world"; str = str.replace(reg,"A"); document.write(str);//AhelloA AworldA </script>
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<script language="JavaScript"> var reg = /b$/gim ; // $表示匹配结尾 var str = "ahelloworldb"; str = str.replace(reg,"A");//ahelloworldA document.write(str); </script> <script language="JavaScript"> var reg = /^a/gim ; // ^ 表示匹配开始 var str = "ahelloworldb"; str = str.replace(reg,"A");//Ahelloworldb document.write(str); </script>

字符集合

语法格式示例说明
[字符列表]正则表达式:[abc] 含义:目标字符串包含abc中的任何一个字符 目标字符串:plain 是否匹配:是 原因:plain中的“a”在列表“abc”中目标字符串中任何一个字符出现在字符列表中就算匹配。
[^字符列表][^abc] 含义:目标字符串包含abc以外的任何一个字符 目标字符串:plain 是否匹配:是 原因:plain中包含“p”、“l”、“i”、“n”匹配字符列表中未包含的任意字符。
[字符范围]正则表达式:[a-z] 含义:所有小写英文字符组成的字符列表 正则表达式:[A-Z] 含义:所有大写英文字符组成的字符列表
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<script language="JavaScript"> var reg = /[a-g]/gim ; // [ - ] 中括号中的 - 表示范围 var str = "abhelloworldc"; str = str.replace(reg,"A"); document.write(str);//AAhAlloworlAA </script> <script language="JavaScript"> var reg = /[abc]/gim ; // []表示集合,表示只要有a或者有b或者有c都匹配 , 如果没有[],表示必须精确匹配abc var str = "abhelloworldc"; str = str.replace(reg,"A"); document.write(str);//AAhelloworldA </script> <script language="JavaScript"> //var reg = /[^abc]/gim ; // [^]中括号中的^表示取反 var str = "abhelloworldc"; str = str.replace(reg,"A"); document.write(str);//abAAAAAAAAAAc </script>

出现的次数

代码说明
*出现零次或多次
+出现一次或多次
?出现零次或一次
{n}出现n次
{n,}出现n次或多次
{n,m}出现n到m次
复制代码
1
2
3
4
5
6
7
<script language="JavaScript"> var reg = /[l]{2,4}/gim //{}表示出现的次数 var str = "ablllhellowlllllorldc"; str = str.replace(reg,"_"); document.write(str);//ab_he_ow_lorldc </script>
复制代码
1
2
3
4
console.log("/[a]{3}/.test('aa')="+/[a]{3}/g.test('aa')); // flase console.log("/[a]{3}/.test('aaa')="+/[a]{3}/g.test('aaa')); // true console.log("/[a]{3}/.test('aaaa')="+/[a]{3}/g.test('aaaa')); // true

在正则表达式中表达『或者』

复制代码
1
2
3
4
5
6
7
<script language="JavaScript"> var reg = /a|d/gim ; var str = "abcdefg"; str = str.replace(reg,"_"); document.write(str);//_bc_efg </script>

常用正则表达式

需求正则表达式
用户名/^[a-zA-Z_][a-zA-Z_-0-9]{5,9}$/
密码/1{6,12}$/
前后空格/^s+|s+$/g
电子邮箱/2+@([a-zA-Z0-9-]+[.]{1})+[a-zA-Z]+$/

  1. a-zA-Z0-9_-@#&* ↩︎

  2. a-zA-Z0-9_.- ↩︎

最后

以上就是陶醉未来最近收集整理的关于第十七章正则表达式正则表达式的作用定义正则表达式对象的全部内容,更多相关第十七章正则表达式正则表达式内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(122)

评论列表共有 0 条评论

立即
投稿
返回
顶部