概述
正则表达式的作用
正则表达式的概念
正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。用我们自己的话来说: 正则表达式用来校验字符串是否满足一定的规则的公式
正则表达式的用途
所以正则表达式有三个主要用途:
- 模式验证: 检测某个字符串是否符合规则,例如检测手机号、身份证号等等是否符合规范
- 匹配读取: 将目标字符串中满足规则的部分读取出来,例如将整段文本中的邮箱地址读取出来
- 匹配替换: 将目标字符串中满足标准的部分替换为其他字符串,例如将整段文本中的"hello"替换成"haha"
使用正则表达式的三个步骤
- 定义正则表达式对象
- 定义待校验的字符串
- 校验 reg.test(str);
定义正则表达式对象
- 对象形式:
var reg = new RegExp("正则表达式")
当正则表达式中有"/"那么就使用这种 - 直接量形式:
var reg = /正则表达式/
一般使用这种声明方式
var reg1 = /abc/;
var reg2=new RegExp("abc");
匹配实例
匹配模式:
- g 全局匹配
- i 忽略大小写匹配
- m 多行匹配
- gim这三个可以组合使用,不区分先后顺序
匹配字符串abc
<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替换为_
<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替换为_
<script language="JavaScript">
var reg = /o/gi ;
// g表示匹配的模式,表示全文匹配 ; i表示忽略大小写匹配
var str = "abcohijOkl";
str = str.replace(reg,'_');
console.log(str);
</script>
- i表示不区分大小写
多行匹配
<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 | 匹配单词的开始或结束 |
^ | 匹配字符串的开始,但在[]中使用表示取反 |
$ | 匹配字符串的结束 |
<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
<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>
<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>
<script language="JavaScript">
var reg = /b/gim ;
// b表示匹配单词的开始和结束
var str = "hello world";
str = str.replace(reg,"A");
document.write(str);//AhelloA AworldA
</script>
<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] 含义:所有大写英文字符组成的字符列表 |
<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次 |
<script language="JavaScript">
var reg = /[l]{2,4}/gim //{}表示出现的次数
var str = "ablllhellowlllllorldc";
str = str.replace(reg,"_");
document.write(str);//ab_he_ow_lorldc
</script>
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
在正则表达式中表达『或者』
<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]+$/ |
a-zA-Z0-9_-@#&* ↩︎
a-zA-Z0-9_.- ↩︎
最后
以上就是陶醉未来为你收集整理的第十七章正则表达式正则表达式的作用定义正则表达式对象的全部内容,希望文章能够帮你解决第十七章正则表达式正则表达式的作用定义正则表达式对象所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复