正则表示
正则表达式,又称为规则表达式。(Regular Expression ,在代码中常简写为regex、regexp或者RE),计算科学的一个概念。正则表达式同城被用来检索、替换那些符合某个模式(规则)的文本!
一、在JavaScript里面的正则
1、利用RegExp对象来创建正则表达式
var Regexp = new RegExp(/表达式/);
2、利用字面量方式创建正则表达式(常用)
var reg = /123/;
二、正则表示的组成
一个正则表达式可以由简单的字符构成,比如是/123/,也可以是简单的和特殊的字符的组合,比如/123^/,这些特殊的字符称为元字符,在正则表达式中是具有特殊意义的专用符号,例如:^,$,+等等
1、字符类;[]表示有一系列字符可供选择,只要匹配到其中一个即可;
例子:
var rg = /[123]/;//包含1或者2或者3,都返回true
console.log(rg.test(‘144444’));//true
特殊字符:^ 表示取反的意思,当然是在字符类里面是表示去翻。在字符类外面表示以什么开头
特殊字符:$ 表示以什么结尾
例子:
//在字符类w外面
var rg = /^123/;//表示以123开头
console.log(rg.test(‘1233’));//true
//有以怎么开头就以什么结尾 特殊字符:$
var rg = /^123$/;//表示只能返回123
console.log(rg.test(‘123’));//true
//在字符类里面
var rg = /[^a]/;//表示除去a的都为true
console.log(rg.test(‘aaaa’));//false
console.log(rg.test(‘bbbb’));//true
2、量词符
* 重复0次或者更多次 相当于 >=0
+ 重复一次或者更多次 相当于 >=1
? 重复0次或者一次 相当于 1||0
{n} 重复n次
{n,} 重复n次或者更多次
{n,m} 重复n到m次
3、正则中的括号
中括号 字符几个,匹配中括号中的任意字符
大括号 量词符,表示里面重复次数
小括号 表示优先级
4、正则中的预定义类
\d 匹配0-9之间的任一数字,相当于[0-9]
\D 匹配所有0-9以外的数字,相当于 [^0-9]
\w 匹配任一字母,数字和下划线,相当于[A-Za-z0-9_]
\W 匹配除所有字母,数字和下划线以外的字符,相当于[^A-Za-z0-9_]
\s 匹配空格(包括换行符,制表符,空格等),相当于[\t\r\n\v\f]
\S 匹配非空字符,相当于[^\t\r\n\v\f]
| 表示或者的字符
三、关于正则表示的对象方法
1、test() 正则对象方法。用于检测字符串是否符合该规则,该对象会返回true或者false。其参数是测试字符串
例子:
var reg = /123/;
console.log(reg.test(123));//true
2、replace() 正则替换方法(正则的替换和js的替换有所不同)。此方法可以实现替换字符串操作,用来替换的参数可以是一个字符串或者是一个正则表达式
stringObject.replace(reg/substr,replacement)//(被替换的字符串、正则,替换的数据)
第一个参数:被替换的字符串或者是正则表达式
第二个参数:替换为的字符串
返回值:是一个替换完毕的新字符串
例子:
var str = ‘我是小龙’;
var news = str.replace(/小龙/,‘大龙’);
console.log(news);//我是大龙
此方法可用以进行文章的替换关键词或者敏感字
但是,replace()方法仅仅能替换规则里面出现的第一个符合的关键字。因此,需要配合正则表达式的参数进行替换
四、正则表达式的参数
switch(也称为修饰符),按照什么样的模式来匹配,有三种值:
g:全局匹配
i:忽略大小写
gi:全局匹配+忽略大小写
语法例子:
/表达式/[siwtch];
//没有switch参数的表达式
var str = ‘我是小龙,就是小龙’;
var nesStr= str.replace(/小龙/,‘大龙’);
console.log(nesStr);//我是大龙,就是小龙
//有switch参数的表达式
var str = ‘我是小龙,就是小龙’;
var nesStr= str.replace(/小龙/gi,‘大龙’);//全局匹配+忽略大小写
console.log(nesStr);//我是大龙,就是大龙
五、几个常用的正则表示
1.匹配手机:var reg = /^1[3|4|5|7|8]\d{9}
/
;
/
/
简
单
的
以
1
开
头
,
3
,
4
,
5
,
7
,
8
为
第
二
位
d
额
,
一
共
11
位
数
字
的
手
机
号
码
2.
匹
配
密
码
:
v
a
r
p
a
s
s
w
o
r
d
=
/
[
a
−
z
0
−
9
−
]
6
,
18
/;//简单的以 1 开头,3,4,5,7,8为第二位d额,一共11位数字的手机号码 2.匹配密码:var password = /^[a-z0-9_-]{6,18}
/;//简单的以1开头,3,4,5,7,8为第二位d额,一共11位数字的手机号码2.匹配密码:varpassword=/[a−z0−9−]6,18/;//6-18位的数字,字母,下划线组成
3.匹配电子邮箱: var email = /^([a-z0-9_.-]+)@([\da-z.-]+).([a-z.]{2,6})$/;