### JS正则表达式(常用版) #### 一、简介 正则表达式在JavaScript编程中扮演着极其重要的角色,它是一种强大的文本处理工具,能够帮助开发者实现对字符串的搜索、替换以及提取等功能。本文将详细介绍JavaScript中常用的正则表达式语法及应用场景。 #### 二、基本语法 ##### 1. 构造正则表达式对象 ```javascript var regExp = new RegExp(pattern, flags); ``` - **pattern**:正则表达式的模式串。 - **flags**:可选参数,用于指定正则表达式的特性: - `g`:全局匹配,即执行全局匹配而不是一次性的匹配。 - `i`:不区分大小写。 - `m`:多行匹配,使“^”和“$”可以匹配每行的开头和结尾。 ##### 2. 特殊字符 - **转义符**:`\` 用来转义特殊字符,如 `\.` 表示匹配一个点号。 - **字符类**:`[]` 匹配包含的任何单个字符。例如 `[abc]` 可以匹配 "a"、"b" 或 "c"。 - **否定字符类**:`[^...]` 匹配未包含在方括号内的任何字符。例如 `[^abc]` 可以匹配除 "a"、"b" 和 "c" 之外的任何字符。 ##### 3. 量词 - `*`:零次或多次匹配前面的字符。 - `+`:一次或多次匹配前面的字符。 - `?`:零次或一次匹配前面的字符。 - `{n}`:正好 n 次匹配前面的字符。 - `{n,}`:至少 n 次匹配前面的字符。 - `{n,m}`:最少 n 次最多 m 次匹配前面的字符。 ##### 4. 边界断言 - `^`:匹配输入字符串的开始位置。 - `$`:匹配输入字符串的结束位置。 - `\b`:单词边界,即两边都是单词字符或两边都不是单词字符的位置。 - `\B`:非单词边界。 ##### 5. 预定义字符类 - `\d`:匹配任何数字字符。 - `\D`:匹配任何非数字字符。 - `\s`:匹配任何空白字符,包括空格、制表符、换页符等。 - `\S`:匹配任何非空白字符。 - `\w`:匹配任何字母数字字符,等价于 `[a-zA-Z0-9_]`。 - `\W`:匹配任何非字母数字字符,等价于 `[^a-zA-Z0-9_]`。 ##### 6. 分组与引用 - `( )`:分组,用于创建捕获组。 - `\(x)`:引用第 x 个捕获组。 ##### 7. 选择 - `|`:表示或,例如 `x|y` 可以匹配 "x" 或 "y"。 #### 三、实例演示 ##### 1. HTML 标签过滤 ```javascript function mask_HTMLCode(strInput) { var myReg = /(<[^>]*>)/g; // 匹配 HTML 标签 return strInput.replace(myReg, ''); } ``` ##### 2. E-mail 地址验证 ```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; } ``` #### 四、方法介绍 ##### 1. `RegExp` 对象的方法 - **`exec()`**:用于查找与正则表达式相匹配的子字符串,并返回第一个匹配的数组结果。如果没有找到匹配项,则返回 null。 - **`test()`**:用于检测字符串是否与正则表达式匹配。如果匹配则返回 true,否则返回 false。 ##### 2. 字符串方法 - **`replace()`**:用于替换字符串中的某些字符。当使用正则表达式作为其第一个参数时,该方法可以用于全局搜索和替换。 #### 五、实例分析 ```javascript var myReg = /(w+)s(w+)/; var str = 'John Smith'; var newstr = str.replace(myReg, '$2 $1'); // 将 'John Smith' 替换为 'Smith John' ``` 在此例中,我们首先定义了一个正则表达式 `/(w+)s(w+)/` 来匹配一个或多个单词字符后面跟着空格,再跟着一个或多个单词字符。通过使用 `$2 $1` 作为 `replace` 方法的第二个参数,我们可以将匹配到的第一个单词与第二个单词进行交换,从而达到反转姓名顺序的目的。 #### 六、进阶应用 ##### 1. URL 格式校验 ```javascript var service_path = 'http://www.baidu.com/fccd/'; var m_reg = /^(\/([a-z0-9]+))+\/$/; // 匹配路径格式 if (m_reg.test(service_path)) { console.log('URL 格式正确'); } else { console.log('URL 格式错误'); } ``` 在这个例子中,我们定义了一个正则表达式 `m_reg` 用于校验 URL 的路径部分。通过使用 `test()` 方法来判断 URL 是否符合预期的格式。 #### 七、总结 正则表达式是JavaScript编程中一个强大而灵活的工具,掌握了基本的语法和一些常用的模式,可以大大提高代码的效率和可读性。通过对本文的学习,相信您已经能够掌握正则表达式的基本用法,并能够在实际项目中灵活运用它们解决各种字符串处理问题。
[ 点击次数:444 | 录制者或者作者:不详 | 更新时间:2006-09-16 16:10:46 ]
正则表达式(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
. 匹配任意字符
- 粉丝: 0
- 资源: 3
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助