什么是正则表达式?
正则表达式是按照一定规则的表达式, 是构成搜索模式的字符序列.
正则表达式可以是单字符, 或更复杂的模式.
正则表达式可用于执行所有类型的文本搜索和文本替换操作
创建正则表达式:
构造函数模式创建:
- var reg = new RegExp("正则表达式","匹配模式");
- // 正则表达式也是一个对象, 他是 RegExp 对象
简易模式创建:
var reg = / 正则表达式 / 匹配模式;
- // 这种字面量创建和构造函数创建有一样的效果
- // 不一样的是, 构造函数模式的正则表达式和匹配模式都是字符串
注意: 在使用简易方法创建的正则表达式是固定的, 你写入什么就是什么, 不能传变量, 构造函数创建的正则表达式比较灵活, 可以传入变量, 但是如 \ d, 简易方法可以直接写, 但是构造创建有特别含义, 需要对 \ 进行转义, 如 \ d
正则表达式的方法:
正则使用的字符串方法:
match():
找到一个或多个正则表达式的匹配:
字符串. match(正则对象)
返回数组: 如果包含, 返回含有匹配项的数组, 不包含, 返回 null
- var reg =/a/;
- var str ="abc";
- console.log(str.match(reg));
- // 输出:["a", index: 0, input: "abc", groups: undefined]
- search():
检索与正则表达式向匹配的值
字符串. search(正则对象)
返回匹配项的下标
- var reg =/a/;
- var str ="abc";
- console.log(str.search(reg));
- // 输出结果为 0
- replace():
替换与正则表达式匹配的子串
字符串. replace(正则对象, 替换内容)
一个新的字符串, 是替换了字符串的第一次匹配或所有匹配之后得到的
- var reg =/a/;
- var str ="abc";
- console.log(str. replace(reg,"d"));
- // 输出结果为 dbc
另外还有之前的 split() 方法, 也可以使用正则表达式
正则对象方法:
compile():
编译正则表达式
正则对象. compile(字符串, 模式修饰符)
重新编译正则规则, 相当于创建了一个新的正则对象
- var reg =/a/;
- var str ="abc";
- console.log(reg. compile(str));
- // 输出结果为 / abc/
注意: 它的模式修饰符也要传字符串类型
test():
检索字符串中指定的值. 返回 true 或 false
正则对象. test(字符串)
返回布尔值, 如果包含返回 true, 不包含则返回 false
- var reg =/a/;
- var str ="abc";
- console.log(reg. test(str));
- // 输出结果为 true
- exec():
检索字符串中指定的值. 返回找到的值, 并确定其位置
正则对象. exec(字符串)
检索字符串中的正则表达式的匹配, 并返回一个数组
- var reg =/a/;
- var str ="abc";
- console.log(reg. exec(str));
- // 输出结果为 ["a", index: 0, input: "abc", groups: undefined]
这个方法与 match 类似
正则修饰符:
格式:
/ 正则规则 / 模式修饰符
new RegExp("正则规则","模式修饰符")
i ------> 忽略大小写
m ------> 多行匹配
g ------> 全局匹配
忽略大小写:
- var str ="abcABC";
- var reg =/A/i;
- console.log(str.search(reg));
- // 输出结果为 0
全局匹配:
通常正则匹配会在碰到第一个相匹配的字符处停下, 而全局匹配的作用就是检索全局, 将所有相匹配的全部检索出来
- // 如
- var str ="abcaBC";
- // 通常检索会在第一个 a 停下
- var reg =/A/g;
- // 而加上全局匹配检索则会检查全字符串
多行匹配:
通常正则的检索只会在第一行起作用, 若碰到换行则不会向下检索, 多行匹配的作用就是检索所有行,
- // 如
- var str ="abc\naBC";
- // 通常会检索第一行, 并不会管换行符之后的内容
- var reg =/A/m;
- // 而加上多行匹配, 则可以检索换行符后的内容
注意: 修饰符可以写多个, 如 / 正则规则 / ig, 或者 ("正则规则","ig")
符号与量词:
方括号:
方括号用于查找某个范围的字符:
[abc] 查找方括号之间的任何字符:
- var reg =/[abc]/;
- var str ="a";
- console.log(reg.test(str));
- // 输出结果为 true
与之对应的是:
[^abc] 查找任何不在方括号之间的字符
- var reg =/[^abc]/;
- var str ="a";
- console.log(reg.test(str));
- // 输出结果为 false
[0-9] 查找任何从 0 至 9 的数字
- var reg =/[0-9]/;
- var str ="5";
- console.log(reg.test(str));
- // 输出结果为 true
[a-z] 查找任何从小写 a 到小写 z 的字符
- var reg =/[a-z]/;
- var str ="h";
- console.log(reg.test(str));
- // 输出结果为 true
[A-Z] 查找任何从大写 A 到大写 Z 的字符
- var reg =/[A-z]/;
- var str ="H";
- console.log(reg.test(str));
- // 输出结果为 true
| 表示或, 它的选择是左右, 要么选它左边要么选它右边
(red|blue|green)
元字符:
. 查找单个字符, 除了换行和行结束符
\d 查找全数字
- var reg =/\d/;
- var str ="5";
- console.log(reg.test(str));
- // 输出结果为 true
\D 查找非数字
- var reg =/\D/;
- var str ="5";
- console.log(reg.test(str));
- // 输出结果为 false
\w 查找数字字母下划线的任意一个字符
- var reg =/\w/;
- var str ="a";
- console.log(reg.test(str));
- // 输出结果为 true
\W 查找非数字字母下划线的任意一个字符
- var reg =/\W/;
- var str ="a";
- console.log(reg.test(str));
- // 输出结果为 false
\s 查找空白字符的任意一个字符 (空格, 换行符)
- var reg =/\s/;
- var str =" ";
- console.log(reg.test(str));
- // 输出结果为 true
\S 查找非空白字符的任意一个字符
- var reg =/\S/;
- var str =" ";
- console.log(reg.test(str));
- // 输出结果为 false
量词:
n+ 匹配任何包含至少一个 n 的字符串
n* 匹配任何包含零个或多个 n 的字符串
n? 匹配任何包含零个或一个 n 的字符串
n{x} 匹配包含 X 个 n 的序列的字符串
n{x,y} 匹配包含 X 至 Y 个 n 的序列的字符串
n{x,} 匹配包含至少 X 个 n 的序列的字符串
n$ 匹配任何结尾为 n 的字符串
^n 匹配任何开头为 n 的字符串
以上罗列了一些常用的方法和符号, 在这里还有全面的 RegExp 方法
来源: http://www.jianshu.com/p/34646745bfbe