正则表达式基础+常用实例

正则表达式

什么是正则表达式

Regexp是正则表达式的缩写
当您检索某个文本时,可以使用一种模式来描述要检索的内容
Regexp就是这种模式
简单的模式可以是一个单独的字符
更复杂的模式包括了更多的字符,并可用于解析、格式检查、替换等等
您可以规定字符串中的检索位置,以及要检索的字符类型,等等

RexExp对象

Regexp对象表示正则表达式,他是对字符串执行模式匹配的强大工具。
定义regexp
通过new关键词来定义regexp对象
格式:new regexp(表达式)
以下代码定义了名为patt1的regexp对象,其模式是“e”:

var patt = new regexp'e';
//当使用该regexp对象在一个字符串中检索时,将寻找的是字符'e'

Regexp对象的方法

Regexp对象有3个方法:test()、exec()、compile()

1.test()

test()方法检测字符串中的指定值。返回值是true或false

	var reg=new RegExp("exe");
	var str="the best things in life are free";
	console.log(reg.test(str));
	//false

查找不到“exe“,返回false。

2.exec()

exec()方法检索字符串中的指定值,返回值是被找到的值,若没有发现匹配,则返回null。

	var reg=new RegExp("e");
	var str="the best things in life are free";
	console.log(reg.exec(str));

由于该字符串内存在“e”,则输出“e”;

3.compile()

compile() 方法用于在脚本执行过程中编译正则表达式。也可用于改变和重新编译正则表达式。

var str="Men is left be cause women always right!";
patt=/Men/g;
str2=str.replace(patt,"gentleman");
console.log(str2);
//gentleman is left be cause women always right!
patt=/(wo)?man/g;
patt.compile(patt);
str2=str.replace(patt,"lady");
console.log(str2);
//Men is left be cause lady always right!

直接量语法

var myreg=/pattern(匹配条件)/attributes(参数),

创建Rexexp对象的语法

var myreg=new regexp(pattern,attributes);

参数pattern是一个字符串,指定了正则表达式的模式或其他正则表达式。
参数attributes是一个可选的字符串,属性见下表。
Attributes设置

修饰符描述
I执行对大小写不敏感的匹配。
G执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)
M执行多行匹配

方括号

方括号用于查找某个范围内的字符

表达式描述
[abc]查找方括号之间的任何字符
[^abc]查找任何不在方括号之间的字符
[0-9]查找任何从0到9的数字
[a-z]查找任何从小写a到小写z的字符
[A-Z]查找任何从大写A到大写Z的字符
[A-z]查找任何从大写A到小写z的字符
(redblue

元字符

元字符metacharacter是拥有特殊含义的字符

表达式描述
.查找单个字符,除了换行和行结束符
\w查找单词字符
\W查找非单词字符
\d查找数字
\D查找非数字字符
\s查找空白字符
\S查找非空白字符
\uxxxxx查找以十六进制数xxxx规定的unicode字符

限定符(量词)

量词描述
n+匹配任何包含至少一个n的字符串
n*匹配任何包含零个或多个n的字符串
n?匹配任何包含零个或一个n的字符串
n{X}匹配包含x个n的序列的字符串
n{X,Y}匹配包含x到y个n的序列的字符串
n{X,}匹配包含至少x个n的序列的字符串
^n匹配任何开头为n的字符串
n$匹配任何结尾为n的字符串

常用实例

1.匹配手机号

	var phone="13910733521";
	var reg=/^1[345789][0-9]([0-9]{4})[0-9]{4}$/;
	reg.test(phone)

2.匹配邮箱地址

	var mail="11616816@163.com";
	var reg=/^(([a-z0-9]+[-_.])?[a-z0-9]+){6,18}@([a-z0-9]+\.){1,2}[a-z]{2,4}$/i;
	reg.test(mail)

3.匹配人名

	var name="國烏院";
	var str=/^[\u4e00-\u9fa5]{2,4}$/;
	str.test(name)

4.身份证

	var id="11010419890202003X";
	var str=/^[^0][0-9]{9}(0[1-9]|1[0-2])(0[0-9]|[1-2][0-9]|3[0-1])[0-9]{3}([0-9]|x)$/
	srt6.test(id)

5.号码遮挡

	var reg= /^1[345789][0-9]([0-9]{4})([0-9]{4}$)/;
	var phone = "13910733521";
	var k=reg.exec(phone);
	console.log(phone.replace(k[1],"****"));
	console.log(phone.replace(reg,"$1$2****"));

6.捕获协议域名端口号

	var str = "http://localhost:8080/test.html";
	var patt1 = /(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)/;
	arr = str.match(patt1);
	for (var i = 0; i < arr.length ; i++) {
	   console.log(arr[i]);
	}
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值