javascript中的reg语法
var reg = /\bis\b/g;
var reg = new Reg( '\\bis\\b' , 'g')
//g代表global,即全文匹配
修饰符
g:global,即全文匹配
i:ignore case 忽略大小写,默认为大小写敏感
m:多行搜索,//在每一行^和$算不算
s:source:正则表达式本身(/\w/的source为\w)
l:lastIndex:下一次搜索的开始位置(在非全局调用情况下无效)
(当前匹配结果,的最后一个字符,的下一个字符)
如果没有配置g属性,多次调用查询时 ,每次查询的开头位置
元字符
原义字符:字符本身的意义
元字符:在正则表达式中有特殊意义的非字母字符
\t:水平制表符(tab键)
类
[ ],构建简单的类
[abc]表示将字母abc归为一类,可以匹配这些字符中的任意一个
反向类:[^abc]指不是abc的任意内容
范围类:
[a-z]指a到z的任意一个字符(闭区间,包含a和z)
[a-zA-Z],连写,匹配所有字母,
注意:如果想匹配-,在后面加-,[a-zA-Z-]
预定义类
. === [^\r\n]:除了回车符和换行符以外的所有字符
\d === [0-9]:数字
\D === [^0-9]
\s === 空白符
\S
\w === [a-zA-Z_0-9]单词字符(数字字母下划线)
\W
边界字符
^ 以xxx开始
$ 以xxx结束
\b 单词边界
\B 非单词边界
量词
?出现0次或者一次
+出现一次或者多次
*出现任意次
{n}出现n次
{n,m}出现n-m次
{n,}至少出现n次
{0,n}最多n次
贪婪模式
'123456789'.replace(/\d{3,6}/g,'K')//正则表达式会尽量多的匹配,直到匹配失败
非贪婪模式
'123456789'.replace(/\d{3,6}?/g,'K')//量词后面加?启用非贪婪模式
分组
(Byron){3}//Byron连续出现三次
Byron{3}//职能匹配到n连续出现三次
或
|
abcdefg(hig|klm)opqrst//pi
反向引用
907E5FEE-44C7-4A4B-8820-444F55BDA599.png忽略分组
4DFDFF1F-9720-4846-A939-FBD2A07C17EC.png前瞻
exp(?=assert)
\w(?=\d)\ //'a2*3'匹配a,因为a前面是个数字,符合前瞻
37FEB2DA-0CF3-441A-BD4D-693A8651FB6E.png
reg.exec()方法
返回一个数组,[lastIndex, 匹配字符串,第一组匹配,第二组匹配...]
该数组还带两个对象属性
index声明匹配文本起始字符的位置
input存放被检索的字符串
字符串方法
String.protatype.search(reg或字符串)
查不到返回-1,查到返回1
String.protatype.match(reg或字符串)
非全局调用:
返回数组对象(与exec相同)
该数组还带两个对象属性
index声明匹配文本起始字符的位置
input声明对stringObject的引用
全局调用:
返回数组:为所有匹配的子字符串
没有index和input属性
String.protatype.split(reg或字符串)
String.protatype.replace(reg,string或function)
若为function(每次匹配的时候调用一次),参数
function(匹配字符串,分组内容(无则没有),匹配项在字符串中的index, 原字符串)
return替换内容
网友评论