字面量或直接量

{} [] /js/
构造函数
new Array()/new Object()/regular expression/new Regexp()

var str=’I love Js’;
var pattern=/Js/;

特殊字符

var str=’//我是注释’
var pattern=/\/\//;
\转义字符 表示/
\n换行 \t匹配tab键

匹配中文: \u4e00-\u9fa5 unicode编码范围
字符类[]
匹配源字符串中里面的任意一个字符
[^X] 表示除X以外的都匹配
[a-z]表示匹配小写的26个英文字母
var str=’javascript’;
var pattern=/[a-z][a-z][a-z][a-z]/ //java
console.log(pattern.exec(str));

.表示除了换行符以外匹配任意单个字符
/./=/[^\n]/

/[a-zA-Z0-9]/=/\w/
/[^a-zA-Z0-9
]/=/\W/
[0-9]=/\d/
[^0-9]=/\D/

既想匹配空格也想匹配tab /\s/

重复
var str=’110’;
var pattern=/\d\d\d/=/\d{3}/
/\d{1,2}/大于等于1小于等于2
/\d{1,}/至少匹配一个

var str=’110’;
var pattern=/\d?/;=/\d{0,1}/最多出现一次[0,1]
/\d+/=/\d{1,}/最少出现1次 >=1
/\d*/=/\d{0,}/最少出现1次>=0

贪婪模式—-非贪婪模式

var str=’aaab’;
var pattern=/a+?/; 只匹配一种情况
如果 /a+?b/ 贪婪模式失效

选择分组和引用

选择:/html|css|js/
var str=’css html js’;
var pattern=/html|css|js/; //css

var str=’ab’;
var pattern=/a|ab/; //a

分组:
var str=’abab’;
var pattern=/(ab)+/; //abab ab 2个结果

var str=’abcd’;
var pattern=/(?:ab)c/; 此时非捕获 abc
var str=’abcd’;
var pattern=/(a(b(c)))/; //c, bc, abc, abc

var str=’ab cd ab’;
var pattern=/(ab) ab \1/; \1代表第一个分组(ab)

分组应用:
[^X] 除。。。之外
/^JS/ 以。。。为开头
/js$/ 以。。。为结尾

\b匹配的是单词的边界 以一个单词为整体,不匹配空格
特殊符号能匹配处位置

前瞻性匹配 ?=
javascript /java(?=script)/ java
java后面必须跟上script

反向前瞻性 ?!
javascrippt /java(?!script)/ java
后面必须不跟script 与前瞻性相反

定时器

var str=’1.js 2.js 3.js’;
var pattern=/js/g;
var total=0,match=’’,result;
while(result=pattern.exec(str))!=null){
total++ // 定时器
match+=’第’++total+’个匹配到的是:’+result[0]+’,它的位置是:’+result.index+’\n’;

}
match+=’共找到’+total+’次匹配’;
console.log(str);
console.log(match);

pattern.valueof()——返回本身正则
.source=typeof

lastIndex 表示最后一个的前一个
input 原字符串
pattern.exec(str)与console.log(RegExp.input) 联合执行

lastMatch表示最近一次匹配的原字符串
leftcontext 上一次匹配的左边剩余的字符
rightcontext————————右——————-
lastParen表示上一次匹配的子选项

str.search(pattern)用正则的方法搜索位置,搜索不到就返回-1
indexof

match(patterm)=exec(str)———-返回数组

var str=’js js js’;
var pattern=’/(j)s/‘;
console.log(str.match(pattern));
match在非全局匹配中返回分组中匹配的内容
全局中返回匹配到的所有字符
exec在非全局匹配中返回分组中匹配的内容
在全局中没任何变化

多行和全局一般会一起使用 /mg

QQ号码案例
/^[1-9]\d{4,}$/
昵称
/^[\u4e00-\u9fa5]{2,18}$/
密码
/^\s{6,16}$/

去除两边空格的方法
function trim(str){
return str.replace(/^\s/,’’).replace(/\s$/,’’);
}
var str=’—————-class—‘;
console.log(‘1’+trim(str+’1’));

var str=’background-color’;
var pattern=/-([a-z])/ig;
console.log(str.replace(pattern,function(all,letter){
return letter.toUppercase();
}));

function toCase(str){
return str.replace(pattern,function(all,letter){
return letter.toUppercase();
});
}

匹配HTML标签
var str=’

123

;
var pattern=/<\/?[a-zA-Z]+(\s+[a-zA-Z]+=.*)>/g