javascript学习(十五)内建对象之RegExp

1.语法

/pattern/attributes
new RegExp(pattern, attributes)
pattern(模式):表示表达式的模式
attributes:是一个可选的字符串,包含属性 "g"、"i" 和 "m",分别用于指定全局匹配、区分大小写的匹配和多行匹配。
var pat1 = new RegExp("javascript");
console.log(pat1.test("this is javascript"));
var pat2 = /javascript/;
console.log(pat2.test("this is javascript"));

2.修饰符

i:执行对大小写不敏感的匹配。
g:执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。
m:执行多行匹配。
var pat2 = /Javascript/i;
console.log(pat2.test("this is javascript"));

3.方括号

[abc]:  查找方括号之间的任何字符。
[^abc]:查找任何不在方括号之间的字符。
[0-9]:查找任何从 0 至 9 的数字。
[a-z]:查找任何从小写 a 到小写 z 的字符。
[A-Z]:查找任何从大写 A 到大写 Z 的字符。
[A-z]:查找任何从大写 A 到小写 z 的字符。
[adgk]:查找给定集合内的任何字符。
[^adgk]:查找给定集合外的任何字符。
(red|blue|green):查找任何指定的选项。
var pat3 = /[a-z | A-Z]/
console.log(pat3.test("sdfhasdfjlsdj00"));
console.log(pat3.test("DSLFLJFGLJ"));

4.元字符

元字符(Metacharacter)是拥有特殊含义的字符:

 .: 查找单个字符,除了换行和行结束符。
\w:查找单词字符。
\W: 查找非单词字符。
\d: 查找数字。
\D: 查找非数字字符。
\s: 查找空白字符。
\S: 查找非空白字符。
\b: 匹配单词边界。
\B: 匹配非单词边界。
\0: 查找 NUL 字符。
\n: 查找换行符。
\f: 查找换页符。
\r: 查找回车符。
\t: 查找制表符。
\v: 查找垂直制表符。
\xxx:查找以八进制数 xxx 规定的字符。
\xdd:查找以十六进制数 dd 规定的字符。
\uxxxx:查找以十六进制数 xxxx 规定的 Unicode 字符。

5.量词

n+:匹配任何包含至少一个 n 的字符串。
n*:匹配任何包含零个或多个 n 的字符串。
n?:匹配任何包含零个或一个 n 的字符串。
n{X}:匹配包含 X 个 n 的序列的字符串。
n{X,Y}:匹配包含 X 至 Y 个 n 的序列的字符串。
n{X,}:匹配包含至少 X 个 n 的序列的字符串。
n$:    匹配任何结尾为 n 的字符串。
^n: 匹配任何开头为 n 的字符串。
?=n:匹配任何其后紧接指定字符串 n 的字符串。
?!n:匹配任何其后没有紧接指定字符串 n 的字符串。

6.属性

global: RegExp对象是否具有标志g。
ignoreCase: RegExp对象是否具有标志i。
lastIndex:一个整数,标示开始下一次匹配的字符位置。
multiline:RegExp对象是否具有标志m。
source:正则表达式的源文本。

7.方法

(1)RegExp 对象方法
compile方法

语法:

RegExpObject.compile(regexp,modifier)
regexp正则表达式
modifier模式修饰符

描述:

compile方法用于在脚本执行过程中编译正则表达式或者改变和重新编译正则表达式
exec方法

语法:

RegExpObjec.exec(string)

描述:

在目标字符串中执行一次正则匹配操作,并将结果以数组的形式返回。

注意:

每次执行exec()函数都只查找最多一个匹配并返回;
如果为正则表达式设置了全局标志(g),exec()函数仍然只返回最多一个匹配,不过我们再次调用该对象的exec()函数就可以查找并返回下一个匹配;
如果regExpObject带有全局标志g,test()函数不是从字符串的开头开始查找,而是从属性regExpObject.lastIndex所指定的索引处开始查找该属性值默认为0,所以第一次仍然是从字符串的开头查找。当找到一个匹配时,test()函数会将regExpObject.lastIndex的值改为字符串中本次匹配内容的最后一个字符的下一个索引位置。当再次执行test()函数时,将会从该索引位置处开始查找,从而找到下一个匹配。当找不到可以匹配的文本时,会自动将regExpObject.lastIndex置0。
var str = "ldfhlewjf23jdslfj4534fdsasfljasdlrjw";
var patt = /[a-z]/g;
var result;
while((result = patt.exec(str)) != null) {
    document.write(result);
    document.write(" ");
    document.write(patt.lastIndex);
    document.write("<br />");
}
test方法

语法:

regExpObject.test(str)

描述:

检测字符串中是否存在正则表达式模式对应的匹配,返回值布尔类型
(2)支持正则表达式的String对象的方法
search方法

语法:

str.search(regexp)
regexp一个正则表达式对象。如果传入一个非正则表达式对象,则会使用new RexExp(obj)隐式地将其转换为正则表达式

描述:

如果匹配成功,则 search() 返回正则表达式在字符串中首次匹配项的索引,否则,返回-1。

注意:

当你想要知道字符串中是否存在某个模式(pattern)时可使用 search,类似于正则表达式的 test 方法。
当要了解更多匹配信息时,可使用 match(会更慢),该方法类似于正则表达式的 exec 方法。
match方法

语法:

str.match(regexp)

描述:

当字符串匹配到正则表达式(regular expression)时,match() 方法会提取匹配项,如果找到返回匹配结果的数组,如果没有匹配项,则返回null

注意:

如果正则表达式没有 g 标志,返回和 RegExp.exec(str) 相同的结果;而且返回的数组拥有一个额外的 input 属性,该属性包含原始字符串;还拥有一个 index 属性,该属性表示匹配结果在原字符串中的索引(以0开始);如果正则表达式包含 g 标志,则该方法返回一个包含所有匹配结果的数组。如果没有匹配到,则返回 null。
replace方法

语法:

str.replace(regexp|substr, newSubStr|function)
regexp,一个RegExp对象。该正则所匹配的内容会被第二个参数的返回值替换掉;substr,一个要被 newSubStr 替换的字符串;newSubStr,替换掉第一个参数在原字符串中的匹配部分,该字符串中可以内插一些特殊的变量名;function,一个用来创建新子字符串的函数,该函数的返回值将替换掉第一个参数匹配到的结果。

描述:

replace() 方法使用一个替换值(replacement)替换掉一个匹配模式(pattern)在原字符串中某些或所有的匹配项,并返回替换后的字符串。这个替换模式可以是字符串或者 RegExp(正则表达式),替换值可以是一个字符串或者一个函数。

注意:

该方法并不改变调用它的字符串本身,而只是返回替换后的字符串;在进行全局的搜索替换时,第一个参数要么是包含g标志的正则表达式,要么是包含g标志的字符串。
split方法

语法:

str.split([separator][, limit])
separator,指定用来分割字符串的字符(串)。separator 可以是一个字符串或正则表达式。 如果忽略 separator,则返回的数组包含一个由原字符串组成的元素。如果 separator 是一个空字符串,则 str 将会转换成一个由原字符串中字符组成的数组。
limit,一个整数,限定返回的分割片段数量。split 方法仍然分割每一个匹配的 separator,但是返回的数组只会截取最多 limit 个元素。

描述:

split() 方法通过把字符串分割成子字符串来把一个 String 对象分割成一个字符串数组。
当找到一个 seperator 时,separator 会从字符串中被移除,返回存进一个数组当中的子字符串。如果忽略 separator 参数,则返回的数组包含一个元素,该元素是原字符串。如果 separator 是一个空字符串,则 str 将被转换为由字符串中字符组成的一个数组。

注意:

如果 separator 是一个正则表达式,且包含捕获括号(capturing parentheses),则每次匹配到 separator 时,捕获括号匹配的结果将会插入到返回的数组中
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值