<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>
js 中正则表达式replace,test,match,search,exec,split方法详解,以及去掉字符串空格的方法
最新推荐文章于 2022-03-01 09:32:13 发布