JavaScript--正则表达式
### JavaScript中的正则表达式详解 #### 正则表达式概念 正则表达式(Regular Expression)是一种在字符串中寻找特定字符或字符集的强大工具。它由一系列字符和特殊符号组成,用于匹配文本中的字符串模式。在JavaScript中,正则表达式通过`RegExp`对象来实现,该对象提供了一系列的方法和属性,帮助开发者执行复杂的字符串搜索和替换操作。 #### 创建正则表达式 在JavaScript中,可以通过两种方式创建正则表达式: 1. **字面量方式**:`/pattern/flags` 2. **构造函数方式**:`new RegExp("pattern", "flags")` 其中: - `pattern` 是用于匹配的字符串模式。 - `flags` 可选参数,用于指定正则表达式的额外行为,常见的有: - `g`:全局匹配,查找所有匹配项,而不仅仅是第一个。 - `i`:不区分大小写匹配。 - `m`:多行模式,使`^`和`$`能够匹配每行的开始和结束,而不仅仅是整个字符串的开始和结束。 #### 字符与特殊符号 正则表达式中的字符可以分为普通字符和特殊符号。特殊符号被赋予了特殊的含义,用来表示各种匹配模式: - **量词**: - `*`:匹配前面的字符零次或多次。 - `+`:匹配前面的字符一次或多次。 - `?`:匹配前面的字符零次或一次。 - `{n}`:匹配前面的字符恰好n次。 - `{n,}`:匹配前面的字符至少n次。 - `{n,m}`:匹配前面的字符至少n次但不超过m次。 - **字符集**: - `[abc]`:匹配字符集中的任意一个字符。 - `[^abc]`:匹配不在字符集中的任意一个字符。 - **边界符**: - `^`:匹配输入字符串的开始位置。 - `$`:匹配输入字符串的结束位置。 - `\b`:单词边界,即单词和非单词之间的位置。 - `\B`:非单词边界。 - **预定义字符类**: - `\d`:匹配任何数字,等价于`[0-9]`。 - `\D`:匹配任何非数字字符,等价于`[^0-9]`。 - `\s`:匹配任何空白字符,包括空格、制表符、换页符等,等价于`[\f\n\r\t\v]`。 - `\S`:匹配任何非空白字符。 - `\w`:匹配任何字母数字字符,包括下划线,等价于`[a-zA-Z0-9_]`。 - `\W`:匹配任何非字母数字字符。 - **转义字符**: - `\\`:匹配字符`\`。 - `\n`:匹配换行符。 - `\r`:匹配回车符。 - `\t`:匹配制表符。 - `\v`:匹配垂直制表符。 - `\cX`:匹配控制字符,如`\cM`匹配Ctrl-M。 #### 正则表达式的方法 JavaScript中的正则表达式对象提供了几个重要的方法,用于进行字符串匹配和替换: - **`.test()`**:测试一个字符串是否符合正则表达式的模式。 - **`.exec()`**:执行一个搜索,并返回找到的第一个匹配结果或null。 - **`.replace()`**:在字符串中执行替换操作。 #### 示例 下面是一些具体的示例代码,展示了如何在实际应用中使用正则表达式: ##### HTML标签的处理 ```javascript function mask_HTMLCode(strInput) { var myReg = /<(\w+)>/; return strInput.replace(myReg, "<$1>"); } ``` 这个函数用于将HTML标签中的尖括号转换为HTML实体,以防止被浏览器解析成标签。 ##### 邮箱地址验证 ```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; } ``` 此函数用于验证邮箱地址的有效性,确保其符合常见的邮箱地址格式。 #### 属性 除了方法之外,正则表达式对象还提供了一些有用的属性: - `lastIndex`:记录上一次匹配的位置。 - `global`:是否开启了全局匹配模式。 - `ignoreCase`:是否开启了不区分大小写的模式。 - `multiline`:是否开启了多行模式。 - `source`:存储正则表达式的模式字符串。 - `input`:存储上一次匹配操作时的输入字符串。 #### 总结 正则表达式是JavaScript中非常强大的工具,用于字符串的搜索和替换操作。通过理解基本的模式和语法,开发者可以编写出更加高效和灵活的代码。无论是简单的文本匹配还是复杂的字符串解析,正则表达式都能提供必要的支持。希望本文能够帮助你更好地理解和运用JavaScript中的正则表达式功能。
正则表达式(regular expression)对象包含一个正则表达式模式(pattern)。它具有用正则表达式模式去匹配或代替一个串(string)中特定字符(或字符集合)的属性(properties)和方法(methods)。
正则表达式构造函数: 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
- 粉丝: 0
- 资源: 3
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助