正则表达式:从固定字符串中,得到某种特征的字符串。
- 定义一个正则表达式
- 构造函数
var pat = new RegExp('hello');
- 字面量
var pat = /hello/;
正则表达式是对象
typeof pat;//'object'
正则的方法:
test(s) 检索字符串中是否包含指定值,返回true/false
var pat = /hello/;
var str = 'hello world';
pat.test(str);//true
pat.test('hel');//false('hel'中不包含'hello')
- exec(s) 检索字符串中是否包含指定值,返回被找到的指定值的数组,否则返回null
var pat = /hello/;
var str = 'hello world';
pat.exec(str);//['hello']
pat.test('hel');//null('hel'中不包含'hello')
- 字符串方法
- search(pat) 检索在字符串中的位置,并返回;否则返回-1
var str = 'hello world';
var pat = /world/;
str.search(pat);//6
- replace(pat)
var str = 'hello world';
var pat = /world/;
str.replace(pat,'man');//'hello man'
- match(pat)
var str = 'hello world';
var pat = /world/;
str.match(pat);//['world']
- split(pat) 主要用于去除无意义的空格
var str = 'hello world , oh I am'
var pat = /\s+/;
str.split(' ');//["hello", "world", "", "", ",", "oh", "I", "am"]
str.split(pat);//["hello", "world", ",", "oh", "I", "am"]
正则的用途:
1.一般用于校验
2.关键词的顾虑
3.内容的检测
4.模版替换
全局匹配 和 忽略大小写
全局匹配 /.../g
var pat = /hello/g;
var str = 'hello world hello day';
str.match(pat);//['hello','hello']
否则:
var pat = /hello/;
var str = 'hello world hello day';
str.match(pat);//['hello']
- 忽略大小写 /.../i
var pat = /hello/i;
var str = 'HELLO world';
str.match(pat);//['HELLO']
- 正则的写法
- 1 [0-9a-zA-Z]匹配0-9,a-Z,A-Z中的任意一个
- 2 [^0-9a-zA-Z]匹配除0-9,a-Z,A-Z之外的元素
- 3 '.' 匹配单个字符(除换行和行结束符)
- 4 \w 查找单词字符(数字、字母、下划线)
- 5 \W 查找非单词
- 6 \d 查找数字
- 7 \D 查找非数字
- 8 \s 查找空白字符
- 9 \S 查找非空白字符
- 10 \b 查找单词边界
- 11 \B 查找非边界
- 12 \n 换行符
- 13 n+ 匹配任何包含至少一个 n 的字符串
var pat = /h+/;//包含一个或者多个h
- 14 n* 匹配尽可能多的n(可以为0)(贪婪模式)
var str = 'aa dd aab abb33abbb88abbbbb';
var pat = /ab*/g;
str.match(pat);//["a", "a", "a", "ab", "abb", "abbb", "abbbbb"]
- 15 n? 匹配尽可能少的n(非贪婪模式)
var str = 'aa dd aab abb33abbb88abbbbb';
var pat = /ab?/g;
str.match(pat);//["a", "a", "a", "ab", "ab", "ab", "ab"]
- 16 n{X} 匹配 X 个 n
var str = '100, 1000 or 10000';
var pat = /\d{4}/g;
str.match(pat);//['1000','1000'];
- 17 n{X,Y} 匹配 X 或者 Y 个 n
var str = '100, 1000 or 10000';
var pat = /\d{3,4}/g;
str.match(pat);//['100','1000','1000'];
- 18 n{X,} 匹配至少 X 个 n
var str = '100, 1000 or 10000';
var pat = /\d{3,}/g;
str.match(pat);//['100','1000','10000'];
- 19 n$ 匹配以 n 为结尾
- 20 ^n 匹配以 n 为开头