在线客服:
yabo88登陆 yabo88登陆
全国服务热线:010-67319468
您的位置:首页 > 新闻中心 >

第33节:JavaScript正则表达式

浏览 87次 来源:【jake推荐】 作者:-=Jake=-    时间:2021-01-14 20:02:32
[摘要] 正则表达式正则表达式2.什么是正则表达式创建正则表达式构造函数创建正则正则表达式是一个通过内置的构造函数构造出来的对象正则表达式的方法2.正则表达式的特殊语法3.正则表达式由普通字符和特殊字符(元字符)组成。Javascript的正则表达式中有四类字符集

正则表达式

1.了解转义

转义意味着变换含义,改变含义

转义符号\转义字符\字符(将原始字符转换为含义)

var str = '你是很"牛逼"的一个人'
// 如果我就想包裹单引号
var str = '你是很'牛逼'的一个人''
// 直接只用发现牛逼会变成一个变量,变量和字符串这么拼接就是错的
var str = '你是很\'牛逼\'的一个人'' 
// \' 就是转义字符
// 同样的\ 代表转义,那么我就想在网页中显示\ 就可以用转义
var str = '你是很\\牛逼\\的一个人'' 

有一些规定的转义字符

\ n换行符\ t制表符\ r回车符

2.正则表达式2. 1什么是正则表达式

正则表达式是字符串的匹配模式yabo网页登入 ,它是专门为简化字符串操作而创建的

j简单地说,它是检索字符串中特定字符的规则,

常规不是一个简单的字符串,而是一个逻辑公式

2. 2.创建正则表达式

两种创建常规规则的方法

由构造函数创建

var reg = new RegExp();

以文字方式创建

var reg = / /;

2. 2. 1构造函数以创建常规

js为我们提供了一个内置的构造函数来创建常规RegExp

RegExp实际上由两个词组成

正则表达式正则表达式

正则表达式是通过内置构造函数构造的对象

var reg = new RegExp('text');  // 实例化一个正则对象

构造函数参数的第一个参数是常规参数,第二个参数是修饰符i g m

示例

var reg = new RegExp('text');  // 实例化一个正则对象
var str = 'This is a text';
console.log(reg.test(str));   // true;
// test()方法就是以正则为规则检查字符串中是否包含正则内容

2. 2. 2。文字数量(直接数量)以创建常规

var reg = /text/;
var str = 'This is a text';
console.log(reg.test(str));   // true;
// test()方法就是以正则为规则检查字符串中是否包含正则内容

2. 2. 3经常注意使用

我们使用这两种方法中的哪一种?根据我们过去的经验,建议使用文字方法

但是有时您只能使用构造函数,例如变量

var v = 'text';
var reg = /v/;            // 这样写正则就匹配v了
var reg = new RegExp(v);  // 所以这种情况就只能用构造函数方法了

2. 3.正则表达式方法2. 3. 1测试

常规对象的方法,它指示字符串(参数)是否与常规规则匹配。

使用方法

reg测试(str)

参数

str:是要查询(匹配)的字符串

返回值

布尔值,如果匹配成功则返回true,否则返回false

var reg = /wuwei/;
var str = 'hello wuwei';  
// 判断str字符串是否匹配我们reg规则
console.log(reg.test(str));

2. 3. 2执行程序

提取成功匹配的子字符串

使用方法

reg.exec(str)

参数

str:是要查询(匹配)的字符串

返回值

布尔值

var reg = /wuwei/g;
var str = 'hello wuwei wuwei aaa';
// 判断str字符串是否匹配我们reg规则
console.log(reg.exec(str));
// ["wuwei", index: 6, input: "hello wuwei wuwei aaa", groups: undefined]

string的match方法也可以实现相同的功能

var reg = /wuwei/g;
var str = 'hello wuwei wuweiaaa';
// 判断str字符串是否匹配我们reg规则
console.log(str.match(reg));
// ["wuwei", "wuwei"]

2. 3. 3您可以使用常规字符串方法搜索来将字符在字符串拆分字符串中的位置获取为数组替换字符串替换

2. 4.修饰符i表示不区分大小写的ignoreCaseg表示全局匹配globalm表示换行匹配多行

2. 4. 1不区分大小写

字符串片段,默认情况下区分大小写,默认情况下区分大小写

// 不区分大小写
var reg = new RegExp('Text');  // 实例化一个正则对象
var str = 'This is a text';
console.log(reg.test(str));   // false;
//  区分大小写
var reg = new RegExp('Text','i');  // 实例化一个正则对象
var str = 'This is a text';
console.log(reg.test(str));   // true;

2. 4. 2全局匹配

默认值匹配一个

// 不加全局匹配
var reg = new RegExp('text');  // 实例化一个正则对象
var str = 'This is a text and text and text';
console.log(str.match(reg));
// ["text", index: 10, input: "This is a text and text and text", groups: undefined]
// 加全局匹配修饰符
var reg = new RegExp('text','g');  // 实例化一个正则对象
var str = 'This is a text and text and text';
console.log(str.match(reg));
// ["text", "text", "text"]

2. 4. 3多行匹配

var reg = new RegExp('^Text');  // 实例化一个正则对象
var str = 'This is a \nText and';
console.log(str.match(reg));  // null
// 多行匹配
var reg = new RegExp('^Text','m');  // 实例化一个正则对象
var str = 'This is a \nText and';
console.log(str.match(reg));// ["Text", index: 11, input: "This is a ↵Text and", groups: undefined]

3.正则表达式的特殊语法3. 1.特殊字符

正则表达式由普通字符和特殊字符(元字符)组成。

普通字符包括:字母(abcABC),数字(123),_等。

特殊字符:()[] {} ^ $ *? \ | +。

可以直接使用普通字符,但必须转义特殊字符。因为特殊字符在常规中具有特殊含义

// 匹配 ^a
var reg = /\^a/
console.log(reg.test('bb^acc'))

// 匹配\m
var reg = /\\m/;    // 特殊字符要转义
console.log(reg.test('asdf\\msadfasd'));    // 字符串中反斜杠要转义

3. 2.预定义的特殊字符

\ t / \ t /制表符

\ n / \ n /回车

\ f / \ f /换页

\ b / \ b /和后备字符

// 匹配制表符
var str = 'a  b';
var reg = /\t/;
console.log(reg.test(str));
// 匹配回车符
var str2 = `a\nb`;
var reg2 = /\n/;
console.log(str2)
console.log(reg2.test(str2));

2. 3.字符集

Javascript的正则表达式中有四种字符集

2. 3. 1个简单的类

这是一组具有一对一对应关系的字符,用[]包裹起来代表这些字母的集合

例如:[abDF45]表示六个字符abDF45的集合

var str = 'abcdefg';
var reg = /[dqqqqqq]/;
console.log(reg.test(str));

2. 3. 2范围类

第一个字母和-组成的范围集

例如:[a-z]表示小写字母的集合。 [A-Z]代表大写字母的集合。 [0-9]代表数字的集合。 [i-y]代表小写字母i到y的集合

var str = 'abcdeg';
var reg = /[f-i]/;
console.log(reg.test(str));

根据字符编码集,可以从小[a-z]到达,但不能从大到小[a-z],因此易于编写和报告错误。

2. 3. 3否定类

通过在[]的顶部添加^表示字符集不包含字符集

例如:[^ abc]表示不包含abc的任何字符集,[^ ab89CD]表示六个不包含ab89CD的字符集

var str = 'fabcdef';
var reg = /[^f]/;
console.log(reg.test(str));

2. 3. 4组合类

使用[]将多个集合拼接在一起以表示一个组合集合。

例如:[a-zA-Z0-9]表示大写和小写字母与数字的组合

var str = '0';
var reg = /[0-9a-z]/;
console.log(reg.test(str));

2. 3. 5注意,

无论您在括号的字符集中写多少个字符,都只会匹配其中一个

特殊汉字集

[\ u4e00- \ u9fa5]表示中文收藏

2. 4.分隔符

字符串有边界。这里的边界指的是字符串的开头和结尾。

2. 4. 1定义字符的第一个位置

我们在字符串的开头使用^

例如:/ ^ abc /确定字符串是否以abc开头

我们使用$表示字符串的结尾

例如:/ xyz $ /确定字符串是否以xyz结尾

var str = 'sdf';
var reg = /^bac/;
console.log(reg.test(str));

2. 4. 2匹配以下字符

(?= n)匹配紧跟在字符n之后的字符

(?! n)匹配不跟字符n

的字符

var str = "ccsdbcd";
var reg = /c(?=d)/;
console.log(str.match(reg));

2. 5.预定义的类(元字符)

这是一个特殊的转移字符,它将一些字母转换为具有特殊含义的字符

。 [^ \ n \ r]除换行符和回车符外的任何字符

\ d [0-9]个数字字符

\ D [^ 0-9]非数字字符

\ s [\ t \ n \ f \ r]空白字符

\ S [^ \ t \ n \ f \ r]非空白字符

\ w [a-zA-Z_0-9]字字符(所有字母)

\ W [^ a-zA-Z_0-9]非单词字符

var str = 'sdf';
var reg = /\W/;
console.log(reg.test(str));

2. 6.量词

不管字符集或元字符javascript 正则表达式,只能匹配一个字符亚博网页版 ,而不能匹配多个字符javascript 正则表达式,因此引入了量词的概念来设置匹配字符的数量

匹配原理符合贪婪匹配原理,也就是说,尽可能多的匹配,可以在量词后添加吗? ,可以取消贪婪匹配

重复编写规则时,可以将其替换为量词。例如,如果您需要重复10个数字亚博app ,则可以从/ \ d \ d \ d \ d \ d \ d \ d \ d \ d \ d /更改为/ \ d {10} /的措词。

2. 6. 1常见的量词写作

{n} npcs

{{n,m} n〜m,包括n和m

{{n,} n〜无穷大,包括n

2. 6. 2量词的特殊用语

{1,}可用+

代替

{0ag真人 ,}可以用*

代替

{0,1}可以替换为?

2. 6. 3贪婪和懒惰

量词+默认贪婪匹配,即尝试匹配指定范围内的最大类别,并添加?量词后面的符号变为惰性匹配,即尽可能少地匹配。

2. 7.个孩子

定义常规时,可以使用()包裹部分规则,以便在使用match或exec进行匹配时,可以在结果中获取部分匹配内容。

var str = "abcd12ef";
var reg = /d(\d+)/;
console.log(str.match(reg));

注意一点加全局匹配g,匹配方法不包含子项

2. 7. 1个子项目反引用

也称为捕获组

var str = "ccsdbbcc99d";
var reg = /([a-z])\1/g;
console.log(str.match(reg));

2. 8.或|

定期|意味着或

var str = "adcd12ef";
var reg = /ad|cd/g;
console.log(str.match(reg));  // ["ad","cd"]

可以与子项结合使用

var str = "adcd12ef";
var reg = /(a|c)d/g;
console.log(str.match(reg));  // ["ad","cd"]

如果或放入字符集,则表示正常的竖线

var str = "adcd1|d2ef";
var reg = /[a|c]d/g;
console.log(str.match(reg));  // ["ad", "cd", "|d"]

3.示例

// 验证手机号
/**
 * 11位 {11}
 * 第一位是1 ^1
 * 都是数字 [0-9] \d
 */
var reg = /^1\d{10}$/;
var str = prompt('请输入手机号');
if (reg.test(str)) {
    alert('成功')
} else {
    alert('失败');
}

老王
本文标签:正则表达式,字符

推荐阅读

最新评论