js 正则表达式语法

来源:互联网 发布:一路一带破产知乎 编辑:程序博客网 时间:2024/05/02 00:13
js正则表达式


gim: g全局 m 换行 i不区分大小写


正则表达式对象

方式1 var box=new RegExp(expression,"gim");参数1 表达式  参数2 模式修饰符
方式2 var box=/expression/gim;

正则对象方法
box.test(string) 返回bool类型
box.exec(string) 返回数组 和null
字符串对象
string.match(box) 返回数组 和 null
string.search(box) 匹配到第一个的位置 和-1
string.replace(box,Content) 替换
string.split(box) 才分字符串 返回数组




正则表达式
//单个字符和数字
. 表示除了换行符(\n)以外的任意一位字符
\w 表示字母 数字 下划线
\W 表示非字母 数字 下划线
\d 表示数字
\D 表示非数字
[a-zA-Z0-9] 表示前一位 是中括号任意一位
[^a-z] 表示前一位 不能是中括号任意一位



//空白字符
\0 null字符
\b 空格字符
\f 进纸字符
\n 换行字符
\r 回车字符
\t 制表符字符
\s 空白 空格 制表符 换行符
\S 非空白 空格 制表符 换行符


//锚字符
^ 开头匹配
$ 结尾匹配
\A 只有匹配字符串开始
\b 匹配单词边界
\B 非单词边界
\G 匹配但钱搜索的开始位置
\Z 匹配字符串结束处和行尾
\z 只匹配字符串结束处

//量词
* 表示前一位字符 是0个或多个字符
+ 表示前一位字符 最少是一个
? 表示前一位字符 是0个或1个
{x,n} 表示前一位字符的数量 最少x  最多n
{n} 表示前一位字符的数量必须为n次
{n,} 表示前一位字符的数量最少n次 最多不限制
{,n} 表示前一位字符的数量最多n次 最少不限制


//或字符 |
this|where|logo 匹配this或where 或logo

//分组
(string)  通过\1或者$1 获取分组内容
$1 表示第一个()里的内容  $2 表示第二个 以此类推
RegExp.$1

在 分组里 前面 加上?:表示非捕获行分组  (?:.*)

(?:style|class) 表示不是出现style 就是出现class 或语法 后面如何加上量词(?:style|class){5} 必须出现5次 如果没有量词  模式出现一次  也可以写{0}不出现(个人理解不知道对不对)

//前瞻捕获
goo(?=gle) 表示goo后面必须是gle 才能返回goo 也可以goo(?=gle|ko|baidu) 只有后面出现gle 或ko或baidu 才返回goo

goo(?!gle) 表示goo后面不是gle 才能返回goo 也可以goo(?!gle|ko|baidu) 只有后面不出现gle 或ko或baidu 才返回goo


灵活运行
获取html中a标签
<a[^>]*> 防止贪婪获取a标签
<a.*?> 防止贪婪获取a标签
<a(((?!style).)*?)> 获取不包含style属性的a标签
<a(((?!class)((?!style).))*?)> 获取不包含style和class属性的a标签

获取包含style或class属性的a标签 必须包含一个
1 <a([^>]*)class([^>]*)>|<a([^>]*)style([^>]*)> 
2 <a([^>]*)(?:style|class)([^>]*)> 
必须包含style和class属性的a标签
1<a([^>]*)style([^>]*)class([^>]*)>|<a([^>]*)class([^>]*)style([^>]*)>
2


<a([^>]*)style([^>]*)>  获取包含style属性的a标签
<a([^>]*)class([^>]*)> 获取包含class属性的a标签


0 0