匹配一些规则的字符串 如用户注册账户的限制 "String".match(//) 正则使用方法
构造 var reg = new RegExp("","")
字面量 var reg = /zz/
/abc/g /[abcd]/g 全局搜索匹配
/abc/i 忽略大小写
/abc/m 多行搜索 multiline 多行搜索 默认值是false
元字符
\t 水平制表符
\r 回车符
\n 换行符
\f 换页符
字符类
[abc] 归类 表示可以匹配这类字符 代表一个
[^] 不匹配 匹配任何字符 除去这几个之外
[0-9a-zA-Z_] 匹配一个0到9 a到z A到Z 还有_任何都可以
预定义类
. [^\r\n] 除了回车和换行符之外的所有字符
\d [0-9] 数字字符 || \D [^0-9] 非数字字符
\s [\t\n\x0b\f\r] 空白符 || \S [^\t\n\x0b\f\r] 非空白字符
\w [a-zA-Z_0-9] 单词字符、字母、数字下划线 || \W [^a-zA-Z_0-9]非单词字符
边界字符
/^/ 以hello开头 /^hello/
//
\b 单词边界 /hello worhellold hello/.match(/\bhello\b/g) 返回 ['hello' , 'hello'] || \B 非单词边界
量词字符 匹配几次
? 出现零次或者一次(最多出现一次) 匹配不到也没关系 就不匹配了
- 出现一次或者多次(至少出现一次) 匹配到了就一直往下匹配 直到又符合匹配规则
- 出现零次或者多次(任意次)
{n} 出现N次 出现几次
{n,m} 出现N到M次 以多的算到m次 尽量多匹配最少一个
{n,} 至少出现n次
{,m} 至少出现m次
{}? 在量词后面加?表示使用非贪婪模式 (尽可能少匹配)
分组
"hellohello".match(/(hello){2,3}/g) 分组匹配hello整体 不写()匹配的是0
"hellohelloworldworld".match(/(hello|world){2,3}/g) 分组匹配hello整体|或world整体
分组嵌套
((|%>)[\t]*)
前瞻
exp1(?=exp2) 匹配后面是exp2的exp1
exp1(?!=exp2) 匹配后面不是exp2的exp1
正则表达式方法 reg方法
reg.test() 测试字符串 匹配上了true 否则false
reg.exec('a1b2c3') 每次匹配到数组 相应下标
字符串方法
string.search(reg) 查找检索指定的子字符串 不支持全局匹配忽略g
string.match(reg) 匹配到的内容拿出来 构成一个数组
string.replace(reg,'hello || 或function(value){return value[0].toUpperCase()+value.substr(1)}) 匹配到之后 替换成所设定的值
string.split(reg) 用正则表达式作为一个切割 /\d/ 就是用数字作为切割
网友评论