正则表达式的 RegExp 实例方法
1. 创建方法
- 使用 new 操作符来创建
var box =RegExp("Box")
创建一个正则变量 模式字符串: Boxalert(box);
显示 /Box/ 显示是字面量的表示法
使用字面量的方法来创建
var Box = /Box/;
/ 模式字符串 / 反斜杠是字面量表示的方法2. 正则表达式的匹配模式
g 表示全局模式,应用于所有的字符串,不会再发现第一个匹配项后就停止
i 不区分大小写
m 多行模式, 会换行进行查找
3. RegExp 的测试方法
- texst() 方法
如果所查找字符中 存在 相对应的模式字符串 返回 true 反之 返回false
var box = /Box/g;
var str= "I dont't know this box";
alert(box.test(str));
会弹出 false
var box = /Box/gi;
var str= "I dont't know this box";
alert(box.test(str));
会弹出 true
- exec( ) 方法
依据相应的匹配模式 返回 包含 第一个 匹配想信息的数组 ,返回的数组是Array的实例,(typeof 是 object) 包含两个而外的属性 : index 和 input
index 表示匹配项在字符串中出现的位置 , input 表示应用正则表达式的字符串( );
var box = /Box/gi;
var str= "I dont't know this box";
alert(box.exec(str));
会弹出 box
typeof(box.exec(str))
查找到 是Array 反之是 null;
- 使用字符串的匹配方法
match() 以数组类型返回匹配成功的字符
var pattern = /box/gi;
var str= "I dont't box know this box";
alert(str.match(pattern);
返回box,box 数组,但是如果匹配模式 没有 g 则只会返回 box 就只会返回第一个匹配而数组,不会全部返回search() 返回第一个匹配成功的字符的位置 (不用全局匹配模式 g 只会返回第一个位置)
replace( ) 替换相匹配的字符 (g 则全部被替换 无 g 则只会替换第一个匹配的字符串)
两个参数,第一个是匹配的正则变量,第二个是所被替换后的字符串;
4.split() 拆分字符串为数组
以数组的方式返回
var pattern = / /gi;
var str= "I dont't box know this box";
alert(str.split(pattern);
RegExp 对象的静态属性 (直接使用,无需声明)
1. 静态属性的使用
兼容性不太好 一般不使用
2. 正则表达式的字符匹配
所有的字符匹配 类似于 用一个匹配的字符去代替某个字符还有就是符合匹配的位置
1234567891011121314151617181920212223242526
var pattern=/g.ole/;var str="goole";alert(pattern.test(str)); true var pattern=/go\sle/;var str="goole";alert(pattern.test(str)); var pattern=/goole{4,8}/; var str="gooleeee";alert(pattern.test(str)); e在被匹配的字符号中出现4~8次 才是正确的var pattern=/(google){4,8}/;var str="googlegooglegooglegoogle"; alert(pattern.test(str)); google在被匹配的字符号中出现4~8次 才是正确的var pattern=/g(.*)k/; * (.*) * 表示g 和 k 之间的匹配 字符 (和Python抓包一样)var str="gllllllllk";alert(pattern.test(str)); truealert(RegExp.$1) RegExp.$1 表示g 和 k 之间的匹配 字符 "llllllll" var pattern=/g(.*)k(.*)L/;var str="gllllllllkoooooL";alert(pattern.test(str));alert(RegExp.$1) ;alert(RegExp.$2)
使用 RegExp 方法 要先运行一下 pattern.test(str) 或 pattern.exec(str))
$1,$2 , $3 依次表示 匹配的字符
贪婪模式最常见的是 (.*)
var pattern=/g(.*)k/;
var str="gllllllllk gllllllllk gllllllllk gllllllllk ";
如果使用 replace 则产生的效果是 将g 和 k 之间的所有匹配项进行替换,即使匹配模式没有指定是全局模式 。
结束贪婪模式 最好的方法是 (.*?) 这样匹配只会匹配第一项(没有指定是全局模式)
还有一种 惰性 方法是 :var pattern=/g([^g]*)k/g;
var str="gllllllllk gllllllllk gllllllllk gllllllllk ";
使用去掉 . 用 [^g] 来限制对 g 的匹配 出现 g 就不匹配
扩展链接
js-正则表达式详解 - 简书
Js 简书 精华
JS使用方法大全 - 简书
正则表达式 基础到深入–进阶一,如何实现最近匹配?