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"));