Javascript正则表达式
应用:平时我们再search一些string的时候,一些比较复杂字符串和数字的查找,用常规的查找方式就很困难,而正则表达式则可以匹配这种复杂的查找,方便我们的操作。
正则表达式:
RegExp是正则表达式的缩写。
当检索某个文本时,可以使用一种模式来描述要检索的内容,RegExp就是这种模式。
简单的模式可以是一个单独的字符。
更复杂的模式包括了更多的字符,并可用于解析、格式检查、替换等等。
可以规定字符串中的检索位置,以及要检索的字符类型等等。
正则表达式的使用:
声明正则表达式:
var part1 = new RegExp("Hello"); var part2 = /Hello/;
这两个表达式表达的是同一种意思:声明出来一个正则表达式,可以用这个正则表达式去匹配“Hello”string。
- test方法
test()方法检索字符串中的指定值。返回值式true或false。
var pat = /my/ var str = "this is my code";
//测试是否匹配到了,如果str里有多个my,那么匹配到第一个my的时候就会返回true,而不会继续匹配下去。 console.log(pat.test(str));//true
- exec方法
exec()方法检索字符串中的指定值。返回值式被找到的值。如果没有发现匹配,则返回null。
var pat = /hello/; console.log(pat.exec("oh hello everyone"));
执行后返回["hello",index:3,input:"hello everyone"]分别是【“返回值”,所在位置,输入的input】
- 正则表达式类型
/pattern/attributes
参数attributes是一个可选的字符串,常用属性“g”(指定全局匹配)“i”(不区分大小写的匹配)
var pat = /my/ig; var str = "My code this is my code"; console.log(str.match(pat));//["My","my"]
字符串正则
- search()字符串查找
var str = "Hello World"; console.log(str.search(/World/));// 6
- match()字符串匹配
var str = "1 plus 1 equal 2"; console.log(str.match(/\d+/)); // [1] console.log(str.match(/\d+/g)); // [1,1,2]
- replace()字符串替换
var str = "Hello boy, I am a bad girl"; console.log(str.replace(/boy/,"guy")); // Hello guy, I am a bad girl
这里需要注意: 这里的替换并没有再源字符串上进行。
var str = "Hello boy, I am a bad girl"; var temp =str.replace(/boy/,"guy"); console.log(str);//Hello boy, I am a bad girl console.log(temp); //Hello guy, I am a bad girl
- split()字符串分割
var str = "Hello guy, I am a bad girl"; var temp1 = str.split(""); var temp2 = str.split(/\s+/); console.log(temp1); console.log(temp2); //["H", "e", "l", "l", "o", " ", "g", "u", "y", ",", " ", "I", " ", "a", "m", " ", "a", " ", "b", "a", "d", " ", "g", "i", "r", "l"] //["Hello", "guy,", "I", "am", "a", "bad", "girl"]
正则写法
- [abc]查找方括号之间的任何字符。
var str = "Hello guy, I am a bad girl"; var pat = /[a-h]/g; var temp1 = str.match(pat); console.log(temp1); // ["e", "g", "a", "a", "b", "a", "d", "g"]
- [^abc]查找任何不在方括号之间的字符。
- [0-9]查找任何从0至9的数字。
- [a-z]查找任何从小写a到小写z的字符
- [A-Z]查找任何从大写A到大写Z的字符
- [A-z]查找任何从大写A到小写z的字符
- [adgk]查找给定集合内的任何字符
- [^adgk]查找给定集合外的任何字符
- red|blue|green查找任何指定的选项
var str = "Hello guy, I am a bad girl"; var pat = /Hello|am/g; var temp1 = str.match(pat); console.log(temp1); //["Hello", "am"]
- . 查找单个字符,除了换行和行结束符
var str = "Hello guy, I am a bad girl"; var pat = /g.y/g; var temp1 = str.match(pat); console.log(temp1);// guy
- \w查找单词字符(字母、数字、下划线)
- \W查找非单词字符
- \d查找数字
还有好多好多,很难记忆。开发的时候有辅助网址:W3Cfuns、Regexper 。实际应用的时候是很复杂的,努力去研究研究~