正则表达式常用知识点以及一些小练习Reg

# 正则表达式

正则表达式就是一个表达式,用来查找一个有指定【特点】的表达式,规则匹配的。

# 正则表达式定义的方式

```

var reg = /abc/;

var reg = new RegExp('abc');

推荐使用字面量的方式,如同数组和对象一样,推荐使用字面量的创建方式

#  正则表达式使用方法

```

reg.test(str);

str.match(reg);

# 特殊属性  i/g/m

g代表的是global全局匹配

i代表ignoreCase忽略大小写,

m代表multiline多行匹配,

# 特殊字符

具有特殊含义的字符。

\   转义字符

|   或

## 方括号  

```

[abc]  查找方括号内的任意一个字符

[^abc]   查找任何不在方括号内的字符

[0-9]  查找0-9之间的数字

[a-z]  查找任何小写字母

[A-Z]  查找任何大写字母

[A-z]  查找任何字母

(red|blue|green)  查找指定字符串(子表达式)

## 元字符

```

.       查找单个字符,除了换行和行结束符。

\w      查找单词字符

\W      查找非单词字符

\d      查找数字

\D      查找非数字

\s      查找空白字符

\S      查找非空白字符

\b      查找单词边界

\B      查找非单词边界

\n      查找换行符

\f      查找换页符

\r      查找回车符

\t      查找制表符

\v      查找垂直制表符

\uxxx   查找以十六位进制数xxxx规定的Unicode字符

## 量词

以下均遵循贪婪匹配:

n+      匹配任何包含至少一个n的字符

n*      匹配任何包含0个或多个n的字符

n?      匹配任何0个或一个n的字符

n{X}    匹配X个n的序列字符串

n{X,Y}  匹配X至Y个n的序列字符串

n$      匹配以n结尾的字符串

^n      匹配任何以n开头的字符串

?=n     匹配任何后面紧接着指定字符串n的字符串

?!n     匹配任何其后没有紧接着指定字符串n的字符串

非贪婪匹配:

n+?    n*? ...

## 补充

```

(?:n)   匹配时子表达式中没有这一项(不补获分组)

# RegExp对象属性

global      查看RegExp对象是否具有g标志

ignoreCase  查看RegExp对象是否具有i标志

multiline   查看RegExp对象是否具有m标志

source      查看正则表达式源文本

lastIndex   一个整数标志开始下一次匹配的字符位置(一般与exec一起使用)

# RegExp对象方法

compile    编译正则表达式。 (就是改变这个正则表达式)

exec       检索字符串中指定的值。返回找到的值,并确定其位置。

test        检索字符串中指定的值。返回 true 或 false。

# 字符串方法

search          检索正则表达式相匹配的值

match           查找所有符合正则匹配条件的结果

replace         替换与正则表达式匹配的字符串

split           把字符串分割成数组(注: 用字表达式分割的话会保留子表达式)

```

// 正则表达式实现aabb的形式变成bbaa

// var str = 'aabbccdd';

// var reg = /(\w)\1(\w)\2/g;

// var str1 = str.replace(reg, function($, $1,$2) {

// return $2 + $2 + $1 + $1;

// })

// console.log(str1); //bbaaddcc

// 给10000000000三位打点 变成 10.000.000.000

// var str = '10000000000';

// var reg = /(?=(\B)(\d{3})+$)/g;

// str.replace(reg, '.'); //10.000.000.000

// 字符串去重 aaaaaaaaaaaaaaaaaaaaaabbbbbbbbcccccccccc变成abc

// var str = 'aaaaaaaaaaaaaaaaaaaaaabbbbbbbbcccccccccc';

// var reg = /(\w)\1*(\w)\2*(\w)\3*/g;

// str.replace(reg, function($, $1, $2, $3){

// return $1 + $2 + $3;

// }); //"abc"


 

// 把the-first-name转换成小驼峰式theFirstName

// var str = 'the-first-name';

// var reg =/-(\w)/g;

// str.replace(reg, function($, $1) {

// return $1.toUpperCase();

// }) //theFirstName


 

// 匹配结尾的数字

// var str = 'dkfdj1232';

// var reg = /\d$/g;

// str.match(reg); //["2"]

// 统一空格数

// var str = ' fkjdf ';

// var reg = /\s+/g;

// str.replace(reg, ' ');//" fkjdf "

// 判断字符串是不是由数字构成

// var str = 'fdjfd214234234';

// var reg = /(\d*?:[a-zA-Z])/g;

// reg.test(str);// false


 

// 删除字符串中的空格

//删除前后空格

// var str = ' d kdfjd dfjdkf ';

// var reg = /(^\s*)|(\s*)$/g;

// str.replace(reg, '');//"d kdfjd dfjdkf"

//删除所有空格

// var reg = /(\s*)/g;

// str.replace(reg, '');//"dkdfjddfjdkf"


 

// 身份证号匹配

// var str = '12345678976543879X';

// var reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/; //不需要全局匹配

// reg.test(str);

//邮箱地址验证

var str = '[email protected]';

var reg = /^[0-9a-zA-Z_-]+@[0-9a-zA-Z_-]+(\.[0-9a-zA-Z_-]+)+$/;

reg.test(str);

发布了19 篇原创文章 · 获赞 58 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/cyg_l02/article/details/84945345