《中级前端1.12》JavaScript正则表达式
正则表达式是由一个字符序列形成的搜索模式。当你在文本中搜索数据时,你可以用搜索模式来描述你要查询的内容。正则表达式可以是一个简单的字符,或一个更复杂的模式。正则表达式可用于所有文本搜索和文本替换的操作。

http://www1.w3cfuns.com/tools.php?mod=regex
正则表达式在线调试工具
正则表达式在线分析工具
定义和使用
var patt1 = new RegExp("hello"); var patt2 = /world/;
test方法
test() 方法检索字符串中的指定值。返回值是 true 或 false。
var pat = /my/; var str = "this is my code..."; console.log(pat.test(str)); // true
exec方法
exec() 方法检索字符串中的指定值。返回值是被找到的值。如果没有发现匹配,则返回 null。
var pat = /hello/; console.log(pat.exec("oh hello world")); //返还["hello", index: 3, input: "oh hello world"]
正则表达式类型 /pattern/attributes
参数 attributes 是一个可选的字符串,常用属性 "g"、"i" ,分别用于指定全局匹配、区分大小写的匹配。
match() 是String的方法,匹配到一个结果时,和pat.exec(str)返回类型一样;用正则属性g匹配时,返还字符串数组。
//不区分大小写 var str = "Visit Hunger"; var patt1 = /hunger/i; console.log(str.match(patt1)); //全局匹配 var str = "hello hunger valley! I am hunger"; var patt2 = /hunger/g; console.log(str.match(patt2)); //不区分大小写,全局匹配 var str = "hello Hunger valley! I am hunger"; var patt3 = /hunger/gi; console.log(str.match(patt3)); //返回 ["Hunger", "hunger"]
字符串正则
1. search
字符串查找,搜索到返还位置,搜索不到返还-1
var str="Visit W3School!"; console.log(str.search(/w3school/)); //-1 console.log(str.search(/w3school/i)); //6
2. match
字符串匹配,返回查询对应的一个数组
var str="1 plus 2 equal 33"; console.log(str.match(/\d+/)); //["1", index: 0, input: "1 plus 2 equal 33"] console.log(str.match(/\d+/g)); //["1", "2", "33"]
3. replace
字符串替换
var str = "Hello jike! oh I am jikexueyuan" console.log(str.replace(/jike/, "test")); //Hello test! oh I am jikexueyuan console.log(str.replace(/jike/ig, "test")); //Hello test! oh I am testxueyuan console.log(str); //Hello jike! oh I am jikexueyuan
上方例子可以看到,replace后str的值并没有改变,说明replace中是按值传递,不会影响原来的变量。
4. split
字符串分割
var str = "Hello Hunger , oh I am Hunger"; str.split(""); //["H", "e", "l", "l", "o", " ", "H", "u", "n", "g", "e", "r", " ", " ", " ", ",", " ", "o", "h", " ", "I", " ", "a", "m", " ", "H", "u", "n", "g", "e", "r"] str.split(/\s+/); //["Hello", "Hunger", ",", "oh", "I", "am", "Hunger"]
\s 表示以空格为分割符
\s+ 会把多个连续空格看作一个空格来分割
正则写法
[adgk] 查找方括号之间的任何字符。
var str="Is this all there is?"; var patt1=/[a-h]/g; console.log(str.match(patt1)); //["h", "a", "h", "e", "e"]
[^adgk] 查找任何不在方括号之间的字符。
var str="hello jikexueyuan!"; var patt1=/[^jike]/g; console.log(str.match(patt1)); //["h", "l", "l", "o", " ", "x", "u", "y", "u", "a", "n", "!"]
[0-9] 查找任何从 0 至 9 的数字。
[a-z] 查找任何从小写 a 到小写 z 的字符。
[A-Z] 查找任何从大写 A 到大写 Z 的字符。
[A-z] 查找任何从大写 A 到小写 z 的字符。
red|blue|green 查找任何指定的选项。 相当于or
var str="hello hunger! How are you?"; var patt1=/hello|you/g; console.log(str.match(patt1)); //["hello", "you"]
. 查找单个字符,除了换行和行结束符。
var str="That's hdot!"; var patt1=/h.t/g; console.log(str.match(patt1)); //["hat"]
hat中,h和t之间只有一个字符,匹配成功。 hdot中,h和t之间超过一个字符,不能匹配。
\w 查找单词字符(字母、数字、下划线)。
var str="Give 100%!"; var patt1=/\w/g; document.write(str.match(patt1)); //G,i,v,e,1,0,0
\W 查找非单词字符。 空格也会输出
var str="Give$ 100% hehe!"; var patt1=/\W/g; document.write(str.match(patt1)); //$, ,%, ,! 可以看到两个空格也输出了
\d 查找数字。
var str="Give 100%!"; var patt1=/\d/g; document.write(str.match(patt1)); //1,0,0
\D 查找非数字字符。
\s 查找空白字符(空格、tab、换行、回车)。
\s+ 多个连续的空白字符会被看作一个空白字符。
\b 匹配单词边界。
var str = "moon"; var patt1 = /\bm/g; document.write(str.match(patt1)); //m var str = "moon"; var patt2 = /oon\b/g; document.write(str.match(patt2)); //oon
m是moon的左边界,能匹配到m;oon是moon的右边界;oo匹配不到,因为他不是边界。
\B 匹配非单词边界。
n+ 匹配任何包含至少一个 n 的字符串
n$ 匹配任何结尾为 n 的字符串。
^n 匹配任何开头为 n 的字符串。
常见正则
手机号: 1[0-9]{10}
邮箱: (\S)+[@]{1}(\S)+[.]{1}(\w)+
http://www1.w3cfuns.com/tools.php?mod=regex
正则表达式在线调试工具
正则表达式在线分析工具

浙公网安备 33010602011771号