正则表达式学习(二)

全局和大小写同时匹配

  var re = new RegExp("a","gi");

  var re1 = /a/gi;

.exec()使用子匹配,用()来创建子匹配

  var str = "Ubuntu 8.10";//取出主版本号和次版本号

  var re = /^[a-z]+s+(d+).(d+)$/i;//这里的两个(d+)就是子匹配

  var arr = re.exec(str);//当字符串不匹配re时返回null

  alert(arr[0]);//完整的str

  alert(arr[1]);//8

  alert(arr[2]);//10

字符串.replace(re)用来替换空白字符

  var str = "some some       some f";

  var re = /s+/g;

  alert(str.replace(re,"#"));//some#some#some#

字符串.split(re)用来替换不同的分隔符

  var str = "a_bc-d";

  var re = /[^a-z]/i;//匹配除字母外所有字符

  alert(str.split(re));//返回["a","bc","d"]

字符串.match(re)匹配并返回结果数组

  var str = "one two three four";

  var re = /[a-z]*/gi;  //表示单词边界

  alert(str.match(re));  //one,two,three,four

re.source属性 返回正则表达式"模式"的文本的复本

  var re = /[a-z]/i;

  alert(re.source);  //输出结果 [a-z]

  alert(re);      //输出结果 /[a-z]/i,相当于re.toString

re.lastIndex属性 指被查找字符串中下一次成功匹配的开始位置,默认值-1,可被exec和test方法修改

  var re = /[A-Z]/g;

  var str = "Hello,World!";

  var arr = re.exec(str); //H

  alert(re.lastIndex);  //1

  arr = re.exec(str);  //W

  alert(re.lastIndex);  //7

当匹配失败(后面没有匹配),或lastIndex值大于字符串长度时,再执行exec方法会将lastIndex设为0(开始位置)

  var re = /[A-Z]/;

  var str = "Hello,World!";

  re.lastIndex = 120;

  var arr = re.exec(str);

  alert(re.lastIndex);//0

用re.exec()+re.lastIndex获取字符串中的数字

var String  = "";
var re = /d+/g;
var str="adf0sdf1asdf2sff3asdfas4asfdafd5asfasf6fsdafasf7asdfas8asdf9asa";
String = String + re.exec(str);
while(re.lastIndex != 0){
	var arr = re.exec(str);
	if(arr != null){
		String = String + arr;
	}	
}
alert(String); //0123456789

  

 

原文地址:https://www.cnblogs.com/goujh/p/8485001.html