正则表达式在每一种编程语言中都有,不只是JavaScript才有的,并且正则表达式也语言无关,是一个独立的内容,每一种语言只是提供不同的方法或者函数可以和正则表达式配合使用,完成字符串查找、替换、删除的操作。
字符串操作
查找子串:String.search()
search() 方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。如果没有找到任何匹配的子串,则返回 -1。
还有一个注意的地方就是,search只搜索一次,即使符合条件的字符串有多个,那么在搜索到第一个满足条件之后,立马就会返回。
var str = "hello world"; console.log(str.search("w"));//6 console.log(str.search("a"));//-1
字符串截取:String.split()
var str = "hello world"; console.log(str.substring(2));//llo world console.log(str.substring(2,5));//llo
获取某个位置的字符:String.charAt()
var str = "hello world"; console.log(str.charAt(0));//h console.log(str.charAt(8));//r
字符串分割:String.substring
var str = "hello world"; console.log(str.split("w"));// ["hello ", "orld"] console.log(str.split(" "));// ["hello", "world"]
字符串检索:String.match()
match和search的区别在于,search返回的是符合条件的下标(索引);match返回的符合条件的内容。都默认只匹配一次。
match通过和正则表达式的g修饰符配合使用可以返回所有满足条件的子串。
var str = "hello 1024 world"; console.log(str.search("l"))//2 console.log(str.match("l"))//["l", index: 2, input: "hello 1024 world"]
字符串替换:String.replace()
replace可以将字符串中某个子串替换为指定的字符串。默认值替换一次。
var str = "hello"; console.log(str.replace("l","L")) //heLlo
正则表达式
基本格式
var patt=new RegExp(pattern,modifiers); var patt=/pattern/modifiers;
建议使用第二种方法,符合其他语言的使用习惯。
正则初体验:
var str = "hello 1024 world"; var patt = /d/ console.log(str.search(patt)) //6 console.log(str.search(/s/)) //5 console.log(str.search(/E/)) //-1 console.log(str.search(/E/i)) //1
搭配使用match
var str = "hello 1024 world 512"; console.log(str.match(/d/))//["1", index: 6, input: "hello 1024 world 512"] console.log(str.match(/d/g))// ["1", "0", "2", "4", "5", "1", "2"] console.log(str.match(/d+/g))// ["1024", "512"]
搭配使用replace
var str = "hello"; console.log(str.replace(/l/,"L")) //heLlo console.log(str.replace(/l/g,"L")) //heLLo
使用test验证是否匹配
需要注意的是,test是RegExp对象的方法,不是String对象的方法,所以不要使用str.test(patt)这种错误的方式。
正确的格式式patt.test(str),如果匹配正则表达式就返回true,否则返回false。
var patt = /d{5,}/ var str = "123456" console.log(patt.test(str)) //true console.log(patt.test("123")) //false