js 中正则表达式replace,test,match,search,exec,split方法详解,以及去掉字符串空格的方法

<head>
	<meta charset="utf-8">
</head>
<script type="text/javascript">
	var str1 = "Jack Tom vs Tom";
	var s1 = str1.replace("Tom","lilei");//用lilei 代替前面的,区分大小写
	var ss1 = str1.replace("Tom","lilei");//用lilei 代替前面的,区分大小写
	console.log("s1:",s1,ss1);
	
	var str2 = "     Lu cy ";
	console.log(str2.length);//8  空格也算长度
	console.log("s2:",str2.replace(" ","空格"));//只匹配一个空格
	console.log("s2:",str2.replace("  ","空格"));//匹配开头两个空格
//	用正则匹配
console.log("s2:",str2.replace(/\s+/g,""))//去除所有空格
//   \s任何空白字符   \S任何非空白字符    g 全局检索

console.log("s2前空格1",str2.replace(/^\s+/g, ""));
console.log("s2后空格1",str2.replace(/\s+$/g, ""));
console.log("s2前后空格1",str2.replace(/(\s+$)|(^\s+)/g, ""));//去除前后空格
var str = new RegExp('\\s+$','g');//用正则对象声明  第一个“\" 是转义字符
console.error(typeof str,str);
console.log(str2.replace(str,"HH"));

//test 查找对应字符串是否存在模式  返回布尔值   正则.test("")原始字符串
var teststr = "1abb1acd3";
var testr = new RegExp("1a.","");//. 匹配除换行符 \n 之外的任何单个字符。 若要匹配包括 \n 在内的任意字符,请使用诸如 [\s\S] 之类的模式。
var testr2 = new RegExp("1a.","g");
console.log(testr);
console.log(testr.test(teststr));
console.log("testreplace",teststr.replace(testr,"好的"));

//exec 查找返回当前的匹配结果,并以数组的方式返回
console.log("exec",testr.exec(teststr));//["1ab", index: 0, input: "1abbcd3"]
var execArr = testr.exec(teststr);
console.error(execArr.index,testr2.exec(teststr),testr2.exec(teststr));
//如果不存在模式,则 arr 为 null,否则 arr 总是一个长度为 1 的数组,
//其值就是当前匹配项。arr 还有三个属性:index 当前匹配项的位置;
//lastIndex 当前匹配项结束的位置(index + 当前匹配项的长度);input 如上示例中 input 就是 str。
//exec 方法受参数 g 的影响。若指定了 g,则下次调用 exec 时,会从上个匹配的 lastIndex 开始查找。
//var str = "1a1b1c";
//var reg = new RegExp("1.", "");
//alert(reg.exec(str)[0]);
//alert(reg.exec(str)[0]);
//上述两个输出都是 1a。现在再看看指定参数 g:
//var str = "1a1b1c";
//var reg = new RegExp("1.", "g");
//alert(reg.exec(str)[0]);
//alert(reg.exec(str)[0]);
//上述第一个输出 1a,第二个输出 1b。

//match str.match(reg);
console.error("match",teststr.match(testr),teststr.match(testr2),teststr.match(testr2));
//match 这个方法有点像 exec,但:exec 是 RegExp 对象的方法;math 是 String 对象的方法。二者还有一个不同点,就是对参数 g 的解释。
//如果指定了参数 g,那么 match 一次返回所有的结果。
//var str = "1a1b1c";
//var reg = new RegExp("1.", "g");
//alert(str.match(reg));
alert(str.match(reg)); // 此句同上句的结果是一样的
//此结果为一个数组,有三个元素,分别是:1a、1b、1c。


//search  可以是字符串也可以是正则,  indexOf只能是正则
var searchstr = "ahello good Hello nihao hello";
console.log("indexOf",searchstr.indexOf("hello"));
console.log("lastIndexOf",searchstr.lastIndexOf("hello"));//最后一个hello h的索引位置
console.log("search",searchstr.search("hello"));
console.log("search",searchstr.search(/Hello/i));//i 是忽略大小写

//split 
var s = "The rain in Spain falls some in the plain."; 

console.error(s.split(/s/i));//["The rain in ", "pain fall", " ", "ome in the plain."]   忽略大小写  s 分割为字符串数组
</script>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值