JavaScript学习—— 三、正则表达式
一、为什么学习正则表达式
典型的搜索和替换操作要求提供与预期的搜索结果匹配的确切文本。虽然这种技术对于对静态文本执行简单搜索和替换任务可能已经足够了,但它缺乏灵活性,若采用这种方法搜索动态文本,即使不是不可能,至少也会变得很困难。
通过使用正则表达式,可以:
- 测试字符串内的模式
例如,可以测试输入字符串,以查看字符串内是否出现电话号码模式或信用卡号码模式。这称为数据验证。 - 替换文本
可以使用正则表达式来识别文档中的特定文本,完全删除该文本或者用其他文本替换它。 - 基于模式匹配从字符串中提取子字符串
可以查找文档内或输入域内特定的文本。
正则表达式的使用,可以通过简单的办法来实现强大的功能。
二、语法
PegExp是正则表达式的缩写,它是一种强大的字符模式匹配规则,简单的有一个字符的匹配,复杂的有多个字符的匹配,如:邮箱、出生日期等。
正则表达式有两种模式:简单模式、复合模式。
- 简单模式指通过普通字符的组合表达的模式。例如:
var reg=/abc0d/; - 简单模式表示具体的匹配,如果要匹配邮箱或电话号码就需要用到复合模式。例如:
var reg=/a+b?\w/;
其中的+、?、\都属于通配符,表示特殊的含义。
语法如下
var expression = /pattern / flags;
其中 pattern 部分是正则表达式。 flags 部分是标记也称为修饰符,正则表达式的标记用于指定额外的匹配策略,正则表达式的匹配模式支持一下3种:
修饰符 | 含义 | 描述 |
---|---|---|
i | ignore - 不区分大小写 | 将匹配设置为不区分大小写,搜索时不区分大小写: A 和 a 没有区别。 |
g | global - 全局匹配 | 查找所有的匹配项。 |
m | multi line - 多行匹配 | 使边界字符 ^ 和 $ 匹配每一行的开头和结尾,记住是多行,而不是整个字符串的开头和结尾。 |
var reg1=/a|bd/;
console.log(reg1.test("bd")); //测试是否有符合正则规则的字串,结果为真或假
console.log(reg1.exec("cd")); //把符合正则规则的字串,放在数组中,没有则返回null
console.log("ad".match(reg1)); //同上,还可以提取符合正则规则的字串
普通字符
字符 | 描述 |
---|---|
[ABC] | 匹配 […] 中的所有字符, |
[^ABC] | 匹配除了 […] 中字符的所有字符, |
[A-Z] | [A-Z] 表示一个区间,匹配所有大写字母,[a-z] 表示所有小写字母。 |
[\s\S] | 匹配所有。\s 是匹配所有空白符,包括换行,\S 非空白符,不包括换行。 |