JS正则表达式( RegExp对象)

RegExp对象用于规定在文本中检索的内容

什么是RegExp?

RegExp是正则表达式的缩写

当您检索某个文件时,您可以规定某个要检索的模式来描述要检索的内容。RegExp就是这种模式

定义RegExp:

        通过new关键字来定义RegExp对象。以下代码定义了名为patt的RegExp对象,其模式是e

        var patt=new RegExp('e');当使用这个正则表达式在字符串中检索时,将寻找的是字符‘e’

RegExp对象有三个方法:

        1.test()  检索字符串中的指定值。返回值是true或者是false

var patt1=new RegExp("e");
document.write(patt1.test("The best things in life are free"));

         2.exec() 方法检索字符串中的指定值,返回值是被找到的值,如果没找到返回null

var patt1=new RegExp("e");
document.write(patt1.exec("The best things in life are free")); 

        RegExp对象表示正则表达式,它是对字符串进行模式匹配的强大工具

        创建RegExp对象的语法:

        new  RegExp(pattern,attributes)

        参数parttern是字符串,指定了正则表达式模式或其他正则表达式

        参数attributes是一个可选的字符串,包含属性‘g’,‘i’,‘m’,分别用于指定全局匹配,区分大小写的匹配和多行匹配。ECMAScript 标准化之前,不支持 m 属性。如果 pattern 是正则表达式,而不是字符串,则必须省略该参数。

返回值

一个新的 RegExp 对象,具有指定的模式和标志。如果参数 pattern 是正则表达式而不是字符串,那么 RegExp() 构造函数将用与指定的 RegExp 相同的模式和标志创建一个新的 RegExp 对象。

如果不用 new 运算符,而将 RegExp() 作为函数调用,那么它的行为与用 new 运算符调用时一样,只是当 pattern 是正则表达式时,它只返回 pattern,而不再创建一个新的 RegExp 对象。

抛出:SyntaxError - 如果 pattern 不是合法的正则表达式,或 attributes 含有 "g"、"i" 和 "m" 之外的字符,抛出该异常。

TypeError - 如果 pattern 是 RegExp 对象,但没有省略 attributes 参数,抛出该异常。

方括号:[]

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

表达式:

[abc]查找方括号之间的任何字符

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

[0-9]查找任何从0到9的数字

[a-z]查找任何从小写a到小写z的字符

[adgk]查找给定集合内的任何字符。

[^adgk]查找给定集合外的任何字符。

(red|blue|green)查找任何指定的选项。

元字符

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

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

\w查找单词字符

\W查找非单词字符

\d查找数字

\D查找非数字字符

\s查找空白字符

\S查找非空白字符

\b匹配单词边界

\B匹配非单词边界

\0查找NUL字符

\n查找换行符

\f查找换页符

\r查找回车符

\t查找制表符

\v查找垂直制表符

\xxx查找以八进制数 xxx 规定的字符。      

\xdd查找以十六进制数 dd 规定的字符。

\uxxx查找以十六进制数 xxx规定的unicode字符。
量词

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

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

n?匹配任何包含0个或者1个n的字符串

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

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

n{X,}匹配包含至少X个n的序列的字符串

n$匹配任何结尾为n的字符串

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

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

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

RegExp对象属性:

global:RegExp对象是否具有标志g

RegExpObject.global

ignoreCase:RegExp对象是否具有标志i

lastIndex一个整数,标志着下一次开始匹配字符串的位置

multilineRegExp对象是否具有标志m

不具有标志 g 和不表示全局模式的 RegExp 对象不能使用 lastIndex 属性。

支持正则表达式String对象的方法

search() 方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。

match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。

该方法类似 indexOf() 和 lastIndexOf(),但是它返回指定的值,而不是字符串的位置。

replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串

document.write(str.replace(/Microsoft/, "W3School"))

split() 方法用于把一个字符串分割成字符串数组。

<script type="text/javascript">

var str="How are you doing today?"

document.write(str.split(" ") + "<br />")
document.write(str.split("") + "<br />")
document.write(str.split(" ",3))

</script>
输出:
How,are,you,doing,today?
H,o,w, ,a,r,e, ,y,o,u, ,d,o,i,n,g, ,t,o,d,a,y,?
How,are,you

compile()

compile() 方法用于改变 RegExp。

compile() 既可以改变检索模式,也可以添加或删除第二个参数。


var patt1=new RegExp("e");

document.write(patt1.test("The best things in life are free"));
patt1.compile("d");
document.write(patt1.test("The best things in life are free"));





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值