### JavaScript中的正则表达式应用详解 #### 一、正则表达式简介 在JavaScript中,正则表达式(Regular Expression)是一种强大的文本处理工具,它由一系列字符和特殊符号组成,用于匹配字符串中的特定模式。JavaScript通过提供内置的`RegExp`对象来支持正则表达式的创建与使用。正则表达式可以用来执行各种复杂的字符串搜索和替换操作。 #### 二、正则表达式的创建 正则表达式的创建有两种方式: 1. **字面量形式**:例如`/abc/gi`。 2. **构造函数形式**:通过`new RegExp()`来创建。例如`new RegExp("abc", "gi")`。 ##### 构造函数参数说明: - `pattern`:一个字符串形式的正则表达式模式。 - `flags`:可选参数,用于指定正则表达式的附加选项,常见的标志包括: - `g`:全局匹配。表示在整个目标字符串中进行匹配,而不是仅在第一个匹配后停止。 - `i`:忽略大小写。表示在匹配时忽略字母的大小写。 - `m`:多行模式。使`^`和`$`能够分别匹配每行的开头和结尾,而不仅仅是整个字符串的开头和结尾。 #### 三、正则表达式模式详解 正则表达式模式由一系列普通字符和元字符组成,这些元字符具有特殊的含义。 ##### 常见的元字符包括: - `\b`:单词边界。 - `\B`:非单词边界。 - `.`:匹配除换行符外的任意单个字符。 - `^`:匹配字符串的开头。 - `$`:匹配字符串的结尾。 - `*`:匹配前面的字符零次或多次。 - `+`:匹配前面的字符一次或多次。 - `?`:匹配前面的字符零次或一次。 - `{n}`:匹配前面的字符恰好n次。 - `{n,}`:匹配前面的字符至少n次。 - `{n,m}`:匹配前面的字符至少n次但不超过m次。 - `[...]`:字符集。匹配字符集中任意一个字符。 - `[^...]`:否定字符集。匹配不在字符集内的任意字符。 - `(x)`:捕获分组。匹配括号内的表达式,并且将匹配结果保存为一个捕获组。 - `x|y`:选择。匹配`x`或`y`中的任意一个。 - `\d`:数字字符。等同于`[0-9]`。 - `\D`:非数字字符。等同于`[^0-9]`。 - `\s`:空白字符。包括空格、制表符、换页符等。 - `\S`:非空白字符。 - `\w`:单词字符。等同于`[a-zA-Z0-9_]`。 - `\W`:非单词字符。等同于`[^a-zA-Z0-9_]`。 - `\n`:换行符。 - `\r`:回车符。 - `\t`:制表符。 #### 四、正则表达式实例 下面是一些常见的正则表达式实例: 1. **HTML标签去除**: ```javascript function mask_HTMLCode(strInput) { var myReg = /<(\w+)>/; return strInput.replace(myReg, "<$1>"); } ``` 2. **电子邮件地址验证**: ```javascript function test_email(strEmail) { var myReg = /^[_a-z0-9]+@([_a-z0-9]+\.)+[a-z0-9]{2,3}$/; if (myReg.test(strEmail)) return true; return false; } ``` 3. **字符串格式化**: ```javascript var myReg = /(w+)s(w+)/; var str = "John Smith"; var newstr = str.replace(myReg, "$2,$1"); document.write(newstr); // 输出 "Smith,John" ``` #### 五、正则表达式的属性 正则表达式对象提供了多种属性来帮助我们更好地理解和控制匹配过程: - `global`:布尔值,表示是否开启了全局匹配。 - `ignoreCase`:布尔值,表示是否开启了忽略大小写的匹配。 - `input`:字符串,表示正则表达式所作用的目标字符串。 - `lastIndex`:整数,表示上一次匹配结束的位置。 - `lastParen`:字符串,表示上一个捕获分组的匹配结果。 - `leftContext`:字符串,表示匹配到的子字符串之前的上下文。 - `rightContext`:字符串,表示匹配到的子字符串之后的上下文。 #### 六、正则表达式的方法 正则表达式对象还提供了多种方法来实现不同的功能: - `exec()`:执行匹配,并返回匹配结果。 - `test()`:测试字符串中是否存在匹配项,如果存在则返回`true`,否则返回`false`。 - `toSource()`:返回表示该对象的源代码。 - `toString()`:返回该对象的字符串表示。 - `valueOf()`:返回该对象的基本值。 通过上述内容可以看出,JavaScript中的正则表达式功能强大且灵活,能够满足各种复杂的文本处理需求。无论是简单的字符串查找还是复杂的文本解析任务,正则表达式都是必不可少的工具之一。
正则表达式构造函数: new RegExp("pattern"[,"flags"]);
参数说明:
pattern -- 一个正则表达式文本
flags -- 如果存在,将是以下值:
g: 全局匹配
i: 忽略大小写
gi: 以上组合
在构造函数中,一些特殊字符需要进行转意(在特殊字符前加"\")。正则表达式中的特殊字符:
\ 转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个单词的边界。
-或-
对正则表达式功能字符的还原,如"*"匹配它前面元字符0次或多次,/a*/将匹配a,aa,aaa,加了"\"后,/a\*/ 将只匹配"a*"。 ^ 匹配一个输入或一行的开头,/^a/匹配"an A",而不匹配"An a"
$ 匹配一个输入或一行的结尾,/a$/匹配"An a",而不匹配"an A"
* 匹配前面元字符0次或多次,/ba*/将匹配b,ba,baa,baaa
+ 匹配前面元字符1次或多次,/ba*/将匹配ba,baa,baaa
? 匹配前面元字符0次或1次,/ba*/将匹配b,ba
(x) 匹配x保存x在名为$1...$9的变量中
x|y 匹配x或y
{n} 精确匹配n次
{n,} 匹配n次以上
{n,m} 匹配n-m次
[xyz] 字符集(character set),匹配这个集合中的任一一个字符(或元字符)
[^xyz] 不匹配这个集合中的任何一个字符
[\b] 匹配一个退格符
\b 匹配一个单词的边界
\B 匹配一个单词的非边界
\cX 这儿,X是一个控制符,/\cM/匹配Ctrl-M
\d 匹配一个字数字符,/\d/ = /[0-9]/
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助