字面量或直接量
{} [] /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