正则表达式在JS中的应用
一、定义
正则表达式是对字符串操作的一种逻辑公式。用事先定好的一些特定字符组成一个“规则字符串”,再用“规则字符串”对字符串进行过滤。
ECMAScript通过RegExp类型来支持正则表达式。
它是对字符串执行模式匹配的强大工具
二、写法
pattern里面一个字符串,代表的是正则
attributes为可选字符串,包含属性:’g’、’i’、’m’ 分别是用于指定全局匹配”g”、不区分大小写”i”、多行匹配”m”
- 1、直接量的字符串语法:
/pattern/attributes // /正则/正则属性, 例如在全局匹配”a”:/’a’/g - 2、RegExp对象的语法:
var reg = new RegExp(pattern,attributes)// RegExp 对象规定在文本中检索的内容。
三、方法:
- 1、直接量的字符串用法:
- search 检索与正则表达式相匹配的值。
//stringObject.search(字符串或正则表达式)
var str = 'How are you doing today?';
console.log(str.search("a")); //4
console.log(str.search(/a/g)); //4
- match 找到一个或多个正则表达式的匹配。
//stringObject.match(字符串或正则表达式)
var str = 'How are you doing today?';
console.log(str.match("a")); //["a", index: 4, input: "How are you doing today?"] index是a的位置
console.log(str.match(/[ ]/g)); //["o", "o", "o", "o"]
- replace 替换与正则表达式匹配的子串。
//stringObject.replace(字符串或正则表达式,要替换的内容)
var str = 'How are you doing today?';
console.log(str.replace(" ","")); //Howare you doing today?
console.log(str.replace(/\w/i,'@')); //@ow are you doing today?
- split 把字符串分割为字符串数组。
//stringObject.split(字符串或正则表达式,可指定返回的数组的最大长度)
var str = 'How are you doing today?';
console.log(str.split(" ")); //"How", "are", "you", "doing", "today?"]
console.log(str.split(/\s/g)); //"How", "are", "you", "doing", "today?"]
- 2、RegExp对象的用法:
- test():检索字符串中的指定值。返回值是true或false。
var str = 'How are you doing today?';
var reg = new RegExp('a','g');
console.log(reg.test(str)); //true
- exec():检索字符串中的指定值,返回值是被找到的值,若没找到则返回null
var str = 'How are you doing today?';
var reg = new RegExp('a','g');
console.log(reg.exec(str)); //true
- compile():用于改变RegExp规则(改变和重新编译正则表达式)
var str = 'How are you doing today?';
var reg = new RegExp('a','g');
console.log(str.replace(reg,'A')); //How Are you doing todAy?
reg.compile('o','g'); //替换正则
console.log(str.replace(reg,'O')); //HOw are yOu dOing tOday?
四、元字符
1、. :查找单个字符,除了换行和行结束符
2、\w :查找单词字符、数字、“_”(即,字母、数字、下划线)
\W :\w的取反
3、\d :查找数字
\D :\d的取反
4、\s :查找空白字符(“”、‘\n’、‘\r’)
5、\b :匹配单词边界
\B :\b的取反
6、\n :查找换行符
7、\u : 匹配汉字([\n4e00-\u9fa5 ])
8、^n:匹配任何开头为 n 的字符串。
9、n$:匹配任何结尾为 n 的字符串。
五、方括号(表示范围)
1、[abc] :查找方括号之间的任何(单个)字符。
2、[^abc] : 查找任何不在方括号之间的字符。
3、[0-9] : 查找任何从0 到 9的数字。
4、[a-z] :查找任何从小写 a 到 z的字符。
5、[A-Z] :查找任何从大写 A 到 Z 的字符
/[0-9A-Za-z_]/ : 相当于\w ;
^ /[^0-9A-Za-z_]/ è\W。
六、分支(或):|
七、量词
1、n+ :匹配任何包含至少一个 n 的字符串。
2、n*:匹配任何包含零个或多个 n 的字符串。
3、n?:匹配任何包含零个或一个 n 的字符串。
4、n{X}:匹配包含 X 个 n 的字符串。
5、n{X,Y}:匹配包含 X ~ Y 之间 n 的字符串。
6、n{X, }:匹配X个n字符串及以上
八、其它
1、匹配中文字符的正则表达式: /[\u4e00-\u9fa5]/g
2、去掉首尾空格 reg = /^\s+|\s+$/g