常用的正则表达式


定义:

正则表达式(regular expression, 缩写为RegExp)是一个描述字符模式的对象,主要用来验证客户端的输入数据。

正则表达式的作用:

1.查找功能:判断一个模式在目标字符串中出现的次数,在目标字符串中的位置。 2.匹配功能:判断目标字符串是否符合一个模式。

【1】创建:

和创建字符串类似,有两种方法

(1)是采用new运算符

(2)是采用字面量字式。(常用)

【2】怎样匹配正则表达式

RegExp()对象有两个常用的方法:

作用:匹配str中是否存在pattern

(1)test()

box.test(“目标字符串”); //判断目标字符串是否与模式匹配,返回布尔值,匹配成功返回true,匹配失败返回false。

(2)exec()

box.exec(“目标字符串”); //返回的是数组,数组第一个元素为匹配到的整个字符串,第二个元素为第一个分组向匹配的内容,有就返回数组的值,没有就返回Null

pattern----------模式

【3】使用字符串的正则表达式的方法

String对象提供了4个使用正则表达式的方法:

1、match(pattern) ------------查找

2、replace(patternReg,"Tom") ------------替换(模式,需要替换的字符串“Tom”)

3、search(pattern) --------------查找匹配的位置在哪,找不到返回-1

4、split(pattern) ---------------拆分成数组,比如按照!来划分,或者按空格来划分

正则表达式中的元字符和元符号

(1) 使用点元字符

.

点符号表示匹配除换行符外的任意字符

var pattern=/g.gle/; var str="gogle"; alert(pattern.test(str));

(2)重复匹配

o*

var pattern=/go*gle/; //o *表示0个,一个或多个o

var str='google';

alert(pattern.test(str));

o+

var pattern=/go+gle/; //o *表示一个或多个o

var str='google';

alert(pattern.test(str));

o?

var pattern=/go?gle/; //o ?表示0个或1个o

var str='gogle';

alert(pattern.test(str));

.?

var pattern=/go.?gle/; //.?表示0个或1个任意字符

var str='gogle';

alert(pattern.test(str));

o{2,4}

var pattern=/go{2,4}gle/; //o{2,4} 表示匹配o 2-4次,包含2-4个O都可以

var str='google'; //O{3}只有三个o

alert(pattern.test(str)); //o{3,}表示3个以上的o

(3)字符类匹配

[a-z]

var pattern=/[a-z]oogle/; //表示出现[a-z]之间的都匹配

var str='google';

alert(pattern.test(str));

[0-9]

var pattern=/[0-9]oogle/; //表示出现[0-9]之间的都匹配

var str='4oogle';

alert(pattern.test(str));

[0-9a-zA-Z] ------复合式的

var pattern=/[0-9a-zA-Z]oogle/; //表示出现[0-9a-zA-Z]之间的都匹配

var str='4oogle';

alert(pattern.test(str));

[^0-9]

var pattern=/[ ^ 0-9]oogle/; //表示非[0-9]之间的都匹配

var str='4oogle';

alert(pattern.test(str));

(3)锚元字符匹配

^

反斜杠后放一个^ ^ 表示行首,强制首匹配 ,$结尾,强制尾匹配

var pattern=/^[ 0-9]oogle$/; //一个对着一个匹配

var str='4oogle';

alert(pattern.test(str));

\w

var pattern=/\woogle/; //字母数字下划线相当于[0-9a-zA-Z_ ]

var str='4oogle';

alert(pattern.test(str));

\W

var pattern=/\Woogle/; //表示非字母数字下划线

var str='4oogle';

alert(pattern.test(str));

\d

var pattern=/\doogle/; //表示0-9

var str='4oogle';

alert(pattern.test(str));

\D

var pattern=/\Doogle/; //表示非0-9之间

var str='4oogle';

alert(pattern.test(str));

\s

var pattern=/go\sogle/; // \s表示匹配一个空格

var str='go ogle';

alert(pattern.test(str));

\b

var pattern=/google\b/; // \b表示是否到达边界

var str='google';

alert(pattern.test(str));

(4)使用或模式匹配

var pattern=/google|baidu|bing/; // |表示匹配或选择模式

var str='google'; //匹配不等于相等,是一种包含的想法

alert(pattern.test(str));

(5)使用分组模式匹配

e{4,8}

var pattern=/(google){4,8}$/; // e 4-8次

var str='googleeeee';

alert(pattern.test(str));

(Google){4,8}

var pattern=/(Google){4,8}$/; // 分组可以看成一个字符,表示Google4-8次

var str=' Google Google Google Google Google';

alert(pattern.test(str));

(.*)

var pattern=/8(.*)8/; //表示匹配8和8之间任意的数

var str='This is a 8google8';

pattern.test(str); //不管用什么方式,一定要运行一下

alert(RegExp.$1); //$1表示获取模式中第一个分组对应的匹配字符

替换

var pattern=/8(.*)8/; //表示匹配8和8之间任意的数

var str='This is a 8google8';

document.write(replace(pattern,'< strong >$1< strong>')) ;//$1表示获取模式中第一个分组对应的匹配字符

两组替换输出

var pattern=/( .*)\s(. *)/; //将baidu和google替换输出

var str='google baidu';

alert(str.replace(pattern,'$1 $2'));

贪婪和惰性

贪婪模式——在匹配成功的前提下,尽可能多的去匹配

惰性模式——在匹配成功的前提下,尽可能少的去匹配

把问号去掉即为贪婪限定符

(6)exec返回数组

捕获性分组 var pattern=/(\d+)([a-z])/; var str="123abc"; alert(pattern.exec(str)); //123a,123,a var a=pattern.exec(str); alert(a[0]); //返回123a alert(a[1]); //返回123 alert(a[2]); //返回a

?:

非捕获性分组

在分组前加上?:,就不会捕获到该分组的内容

var pattern=/(\d+)(?:[a-z])/; var str="123abc"; alert(pattern.exec(str)); //123a,123

嵌套分组

从外往内获取

var pattern=/(a?(b?(c?)))/; ​ var str="abc"; ​ alert(pattern.exec(str)); ​ var a=pattern.exec(str); ​ alert(a[0]); //整个匹配到的字符串 ​ alert(a[1]); //匹配第一个分组 ​ alert(a[2]); //匹配第二个分组 ​ alert(a[3]); //匹配到第三个分组

?=

前瞻捕获

var pattern=/goo(?=gle)/; //goo后边必须是gle才能返回goo,这里一定要注意,返回的是goo,不是google var str="google"; alert(pattern.exec(str)); //返回goo

\

用转义字符完成特殊字符匹配

var pattern=/\[/;
    var str="[";
    alert(pattern.test(str));

换行

限定了首匹配并且开启换行模式

var pattern=/^\d+$/gm; / /限定了首匹配^,必须开启换行模式 var str="1.baidu\n2.google\n3.bing"; alert(str.replace(pattern,'#'));

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冰镇奶茶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值