1NetMedia_Blog

<< h5在光标位置插入内容,点击事件...  类别: JS Chrome Ajax 跨域设置 >>
一些有用的JS正则表达式
[ 日期: 2019-05-31 3:39:56 PM | 作者: admin | 来源: Original | 人气:92 | 晴天 | 心情: +2 ] 字号: 【
急速栏目链接:
标签:变量  |  编译  |  
^ : 匹配以什么开头,也匹配\n,\r之后的位置
$ : 匹配以什么结尾,也匹配\n,\r之前的位置
? : 匹配前面子表达式0次或1次 ={0,1}
+ : 匹配前面子表达式1次或多次 ={1,}
* :匹配前面子表达式两次或多次 ={0,}
. :匹配除"\n"之外的任何单个字符,要匹配包含\n 用[.\n]

(?=)或(?!) :正向预查,正向断言
eg:
var str = "100000000000000";
var reg = /(?=(\B)(\d{3})+$)/g
str.replace(reg,'.') //"100.000.000.000.000"

\n : 反向引用前面一个子表达式(下标),var reg = /(\w)\1(\w)\2/g 匹配 'aabb'字符。

【注意】
? : 当该字符紧跟任何一个其他限制符(*,+,?,{n}…),匹配模式是非贪婪的,尽可能少匹配。 'oooo' 'o+?'匹配单个o,'o+'匹配所有o;
eg:'oooo'.match(/o+?/g)//["o", "o", "o", "o"]
'oooo'.match(/o+/g) //["oooo"]

关于正向预查和反向预查

测试的文本:
Java6 Java7

1、正向预查
(?:pattern) 匹配结果。Java(?:6|7)等效于Java6|Java7,结果Java6 Java7

(?=pattern) 正向匹配。Java(?=6),匹配后面跟着6的Java,即第一个Java,结果Java

(?!pattern) 正向不匹配。Java(?!6),匹配后面不跟着6的Java,即第二个Java,结果Java

2、反向预查
(?<=pattern) 反向匹配。(?<=J)a,匹配紧跟字母J后面的a,结果["a", "a"]

(?<!pattern) 反向不匹配。(?<!J)a,不匹配紧跟字母J后面的a,结果["a", "a"]
==================================================


重新编译正则表达式
使用compile方法可以对指定的正则表达式进行修改并且重新编译,提高了正则表达式的适应性!

var str="Every man in the world! Every woman on earth!";

patt=/man/g;
str2=str.replace(patt,"person");
console.log(str2+"<br />");

patt=/(wo)?man/g;
patt.compile(patt);
str2=str.replace(patt,"person");
console.log(str2);
给正则表达式加入变量

function getCode(str,param){
//var reg =new RegExp("^\\d+" + param + "$","gim");//以数字开头,参数结尾
var reg =new RegExp("\\d+" + param,"gim");
return str.match(reg);
}

//getCode('aaa000aas','aa');
//["000aa"]
按子表达式分组数据

匹配网址,并按协议、域名、端口、参数分类保存
var reg = /(https|http|ftp)\:\/\/([0-9A-z\.]+):?(\d{1,4})?\/([\w\W]+)\?([\w\W]+)/g;
var url = 'http://www.1netmedia.cn:81/base/user/?name=zhangsan&age=20';
var result = reg.exec(url);
result;
//result

   
Rss Comment  

没有相关评论

发表评论
请先注册,才能发表评论!
- 注册 -