js常用本地对象RegExp使用

来源:互联网 发布:c语言编程入门编程题 编辑:程序博客网 时间:2024/05/20 01:39

RegExp对象的常用方法:

下面的两个是正则常用的匹配写法:

/** 匹配第一个"bat"或"cat",不区分大小写*/var pattern1 = /[bc]at/i;/** 与 pattern1 相同,只不过是使用构造函数创建的*/var pattern2 = new RegExp("[bc]at", "i");

一个正则表达式的基本写法规则:

var expression = / pattern / flags ;

模式(pattern)部分可以是任何简单或复杂的正则表达式,可以包含字符类、限定符、分组、向前查找以及反向引用。每个正则表达式都可带有一或多个标志(flags),用以标明正则表达式的行为。正则表达式的匹配模式支持下列 3 个标志。

g:表示全局(global)模式,即模式将被应用于所有字符串,而非在发现第一个匹配项时立即停止;
i:表示不区分大小写(case-insensitive)模式,即在确定匹配项时忽略模式与字符串的大小写;
m:表示多行(multiline)模式,即在到达一行文本末尾时还会继续查找下一行中是否存在与模式匹配的项。

与其他语言中的正则表达式类似,模式中使用的所有元字符(Metacharacter)都必须转义。正则表达式中的元字符包括:

( [ { \ ^ $ | ) ? * + .]}

这些元字符在正则表达式中都有一或多种特殊用途,因此如果想要匹配字符串中包含的这些字符,就必须对它们进行转义。

下面是一个正则表达式的字符类表:

字符 匹配说明 […] 方括号内的任意字符 [^…] 不在方括号内的任意字符 . 查找单个字符,除了换行和行结束符以外的任意字符。 \w 查找单词字符。任何ASCII字符组成的单词,等价于[a-zA-Z0-9] \W 查找非单词字符。任何不是ASCII字符组成的单词,等价于[^a-zA-Z0-9] \d 查找数字。任何ASCII数字,等价于[0-9] \D 查找非数字字符。任何除ASCII数字之外的字符,等价于[^0-9] \s 查找空白字符。任何Unicode空白符 \S 查找非空白字符。任何非Unicode空白符的字符,注意\w和\S不同

正则表达式的直接量字符表:

字符 匹配说明 \0 查找 NUL 字符(\u0000)。 \n 查找换行符(\u000A)。 \f 查找换页符(\u000C)。 \r 查找回车符(\u000D)。 \t 查找制表符(\u0009)。 \v 查找垂直制表符(\u000B)。 \xxx 查找以八进制数 xxx 规定的字符。 \xdd 查找以十六进制数 dd 规定的字符。例如:\x0A等价于\n \uxxxx 查找以十六进制数 xxxx 规定的 Unicode 字符。例如:\u0009等价于\t

正则表达式的重复字符表:

字符 含义 n+ 匹配任何包含至少一个 n 的字符串。等价于{1,} n* 匹配任何包含零个或多个 n 的字符串。等价于{0,} n? 匹配任何包含零个或一个 n 的字符串。等价于{0,1} n{X} 匹配包含 X 个 n 的序列的字符串。 n{X,Y} 匹配包含 X 至 Y 个 n 的序列的字符串。 n{X,} 匹配包含至少 X 个 n 的序列的字符串。

正则表达式的锚字符表:

字符 含义 n$ 匹配任何结尾为 n 的字符串。 ^n 匹配任何开头为 n 的字符串。 \b 匹配单词边界。 \B 匹配非单词边界。 ?=n 匹配任何其后紧接指定字符串 n 的字符串。 ?!n 匹配任何其后没有紧接指定字符串 n 的字符串。

RegExp对象的方法exec():

var str = "Visit W3School, W3School is a place to study web technology."; var patt = new RegExp("W3School","g");var result;while ((result = patt.exec(str)) != null)  {  console.log(result);  console.log('lastIndex:'+patt.lastIndex); }

这里写图片描述

可以看到这个方法返回的是数组,每一个元素是查找的字符串,第个元素是这个字符串开始的下标值,第三个元素是这个被查找的字符串。如果要循环去查找匹配,需要去重新设置lastIndex的下一个开始的位置,第二个显示就是设置了新的下标后查找出现的结果。

RegExp对象的方法test():

var str = "Visit W3School, W3School is a place to study web technology."; var patt = new RegExp("W3School","g");console.log(patt.test(str));

test()查找到匹配结果之后就返回true,然后就停止查找,因为只是匹配了一次。

原创粉丝点击