java正则表达式+?%3c=,JS中的正则表达式 - osc_f4gmzqne的个人空间 - OSCHINA - 中文开源技术交流社区...

>>> 关于正则表达式

正则表达式在网站开发过程中,用来匹配验证字符串是否规范,用途非常广泛,下面简单了解正则表达式:

一、正则表达式的声明

1、字面量声明:

/ 正则表达式规则 / 匹配模式

例:var reg = /^abc$/i;

2、new关键字声明:

var reg = new RegExp("^abc$",i);

二、正则表达式规则的描述

规则描述:

符号

描述

/.../

代表一个模式的开始和结束

^

匹配字符串的开始

$

匹配字符串的结束

\s

任何空白字符

\S

任何非空白字符

\d

匹配一个数字字符,等价于[0-9]

\D

除了数字之外的任何字符,等价于[^0-9]

\w

匹配一个数字、下划线或字母字符,等价于[A-Za-z0-9]

\W

任何非单字字符,等价于[^A-Za-z0-9_]

.

除了换行符之外的任意字符

量词描述:

符号

描述

{n}

匹配前一项n次

{n,}

匹配前一项n次,或者多次

{n,m}

匹配前一项至少n次,但是不能超过m次

*

匹配前一项0次或多次,等价于{0,}

+

匹配前一项1次或多次,等价于{1,}

?

匹配前一项0次或1次,也就是说前一项是可选的

符号:

符号

描述

|

匹配选择字符中任意一个,如 p|q,可匹配q或p

()

分组

[]

要匹配的数据

^

取反

三、正则表达式的常用模式

1、g 表示全局匹配。不加g表示只匹配第一个符合要求的字符串;

"aaa".replace(/a/,"*"); --> "*aa"

"aaa".replace(/a/g,"*"); --> "***"

2、i 表示忽略大小写匹配,默认要求大小写也必须符合正则要求。

"aAa".replace(/A/,"#"); --> "a#a"

"aAa".replace(/A/i,"#"); --> "#Aa"

"aAa".replace(/A/gi,"#"); --> "###"

3、m 表示多行匹配模式:

如果不带m,表示一个字符串只有一个开头一个结尾;

如果带m,那么对于多行字符串,可以有多个开头多个结尾。

例一:var str="This is an\n antzone good";var reg=/an$/;

console.log(str.match(reg));

不能够匹配字符串"an",尽管"an"后面已经换行了,但是并没有采用多行匹配,所以不是字符串行的结尾。

例二:var str="This is an\n antzone good";var reg=/an$/m;

console.log(str.match(reg));

可以匹配字符串"an",因为采用了多行匹配。

例三:var reg = /^b/;var str = 'test\nbbs';

execReg(reg,str);

匹配失败,因为字符串的开头没有b字符。但是加上m修饰符之后:

例四:var reg = /^b/m;var str = 'test\nbbs';

execReg(reg,str);

匹配到b,因为加了m修饰符之后,^已经表示行首,由于bbs在字符串第二行的行首,所以可以成功地匹配。

[多行字符串]

① 字符串中用\n表示换行:"abc\nabc".replace(/^a/gm,"*");

② ES6中可以用反引号``表示字符串,这种字符串,支持直接换行。

4、检测方法

(1)reg.test(str):检测一个字符串是否符合正则要求,返回true或false。

(2)reg.exec(str):检测一个字符串是否符合正则要求,符合返回数组,不符合返回null。

返回数组的格式:

① index属性: 表示字符串中,第几个字符,开始匹配正则。

② input属性: 表示完整的被检索字符串。

③ 下标第0个: 表示 符合正则要求的 字符串子串。

④ 下标从1往后: 表示 匹配正则中()包裹的字符串子串。也就是说,正则中有几个(), 返回的数组中就有几个下标。

例:

/12(3)(\d)56/.exec("aaa123056bbb");

[0:"123056",1:"3",2:"0",

index:3,

input:"aaa123056bbb",

length:3]

四、正则表达式常用验证练习

1、验证邮箱

var reg = /^[a-zA-Z0-9]+@[a-zA-Z0-9]+\.[a-zA-Z]+(\.[a-zA-Z]{2,3})?$/;var mail = "123@qq.com";console.log(reg.test(mail));

2、验证邮政编码(6位)

var reg = /^\d{5}$/;var mailno = "251400";

console.log(reg.test(mailno));

3、验证手机号(第一位为1,第二位为3/5/7/8,共11位)

var reg = /^1(3|5|7|8)\d{9}$/;var phone = "17862009622";

console.log(reg.test(phone));

4、验证年龄(1~120)

var reg = /^(\d|[1-9]\d|1[01]\d|120)$/;//var reg = /^((1[0-1]|[1-9])?\d|120)$/;

var age = "121";

console.log(reg.test(age));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值