简单的js正则表达式知识点笔记

<script>
window.onload = function(){
/*
\b \B (?=N) (?!N) ^ $ 匹配的都是位置,如果前后有字符 则匹配位置上的字符;
所有匹配都是尽可能多的匹配 ,如果需要尽可能少的匹配 则可以在表达式后加上"?" ;
*/
//test();
//zhongkuohao();
quantifier();

}
/*
量词:
n+ :至少一个n 
n? :零个或者一个  //经常这样用 某字符后有0或1个另一字符的匹配   例如:to?   "toaptoot"
n* :零个或者多个  //如果 这样用 w* ,u* 意味着 对空匹配后跟零个或多个w,u的字符  会返回很多空串 
n{X}:匹配包含X个n的字符串  并返回X个n
n{X,Y}匹配包含X个至Y个n的字符串
n{X,} 至少X个
n$ :结尾为n的字符串  //无则返回null 有则返回匹配字符  例如 on$  "moon won" 返回 "on" 注:匹配字符串结尾  而不是其中的某个单词的结尾
^n :开头为n的字符串  //无返回null 有则返回匹配字符  例如  ^is  "is this yours?"  返回"is" 注:匹配字符串开头 而不是其中的某个单词的开头
?=n 其后紧跟n的字符串 //用法:all(?= lo) 查找其后紧跟" lo"的all字符串 找到 返回"all" 找不到返回null 下同 
?!n 其后不紧跟n的字符串
*/
function quantifier(){
var text = 'aan';
var regex = /(?=aa)/g;


var match = regex.exec(text);
console.log(text.match(regex));        // logs 'First'
console.log(regex.lastIndex); 

/* var regExp = new RegExp("(n|u)","gi");
var str = "3NUL01w\01\|\r\t\v\f\\03sbcskyyghiNnUULL中pq won * \n123n moon aky" ;
console.log(str.match(regExp));
console.log(regExp); */

function zhongkuohao(){
/*
范围[]:

[abcijk] : 括号中任意的字符 
[^abcijk]: 括号中字符之外的任意字符
[0-9]:     0到9之间的任意数字
[a-z]:     a到z之间的任意的字符
[A-Z]:     A到Z之间的任意的字符
[A-z]:     A到z之间的任意的字符
[^a-z]:    a到z之外任意字符 
[a|z|s]:   括号中任意的字符      //此处的|并非或 而是字符 同样会被匹配 
(a|z|s):   括号中的| 代表是或 不会被匹配  //小括号即分组 每一个小括号\1,\2,\3...从左至右排序 \1代表分组1匹配的字符  例如:(\w+)\\n\1  匹配   yao\nyao
          
元字符:

. : 点字符 代表任意的单个字符 换行 结束符除外   //故.不能放置到范围符号[]中 
\d: 查找数字   new RegExp("\\d","g")   /\d/g 
\D: 非数字字符  
\w: 查找单词字符    //什么是单词字符那?   数字和英文 字母  即[0-9]和 [A-z]和_结合体 
\W: 查找非单词字符 即除了[0-9]和 [A-z]和_之外的 字符
\s: 查找空白/间隙字符 \r \t \v \f \n 空格 均能匹配  
\S: 查找非空白字符   
\b: 查找单词边界  即查找紧挨着非数字和英文字母字符的字符  new RegExp("\\b3","g"); \b位置在左边 则找左边边界为3的字符,反之,则找右边的 
\B: 查找非单词边界 
\0: 查找不与数字挨着的\0 
\t: 查找制表符
\n: 查找换行符
\f: 查找换页符
\r: 查找回车符
\v: 查找垂直制表符 
\xxx:查找8进制的对应的字符  例如 \127 转换2进制是87  即 W
\xdd:查找16进制对应的字符  \x57   转换2进制是87  即 W
\uxxxx:查找16进制对应的Unicode字符  \u0057  即 W
*/
//var regExp =new RegExp("[^a-z]","g");
var regExp =new RegExp("\\w","g");
var str = "3NUL01w\01\|\r\t\v\f\\03sbcskghiNULL中pqw* \n123" ; 
console.log(str.match(regExp));
}
function test(){
//当 RegExp(pattern, attributes); 当pattern为字符/字符串时候,attributes可用,当pattern为RegExp对象时,必须忽略attributes参数,否则包TypeError
//pattern 不是合法的正则或者 attrs为 i g m 之外的字符  报 SyntaxError
//i 忽略大小写 g全局(查找所有符合的) m 多行匹配
var regExp = new RegExp("he","g");
//var test =RegExp("/d");
var str = "hellochain123hello"+"\r\n"+"iihe";
document.write(str);
//var result;
console.log(regExp);
//console.log( test);
console.log(regExp.exec(str)); 
console.log(regExp.exec(str)); 
console.log(regExp.exec(str)); 
/*
RegExp对象的exec()方法:
无匹配,返回null
有匹配,则分两种情况 :
attributes为非全局
attributes不等于g时,返回的数组 和String.match(Object RegExp)返回的一样,返回匹配的字符(只匹配第一个),
但是还有一个index属性(匹配字符的索引)和一个input属性(目标字符串)
attributes为全局(g)
attributes等于g时,String.match(Object RegExp)返回的是所有的匹配字符的数组,而exec()则返回的与全局相同,但是每调用一次
其返回的数组的index属性就会更改为匹配的字符的索引,而RegExp对象的lastIndex属性相应的更改为匹配到的字符的下一字符的索引
例如:
var regExp = new RegExp("llo","g");
var str = "hellochain123hello33";
regExp.exec(str)   //返回 Array [ "llo", index:2,input:hellochain123hello33]  regExp.lastInde=5
regExp.exec(str)   //返回 Array [ "llo", index:15,input:hellochain123hello33]  regExp.lastInde=18
str.match(regExp)  //返回 Array [ "llo","llo"]

*/

/* console.log(regExp.exec(str)); 
console.log(regExp.lastIndex);
console.log(regExp.exec(str));
console.log(regExp.lastIndex); */
/*
RegExp对象的test()方法:
这个方法比较简单 ,当regExp对象匹配地字符被包含在比对的字符串中,则返回true 否则返回false
注意:
如果之前之前调用过regExp.exec(str)方法进行全局匹配至字符串末时,再调用test()方法,纵然此时目标字符串中有匹配的字符时,
仍然返回false,这是因为此时的RegExp对象的lastIndex值索引后再无匹配字符,而regExp对象是从lastIndex开始匹配的,
故需将lastIndex重置为0,或者任意匹配字符的前方索引即可 




*/
//console.log(regExp.test(str));


}
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值