javascript的正则表达式

来源:互联网 发布:软件测试中软件的定义 编辑:程序博客网 时间:2024/05/17 18:43

正则的一些例子

    var str1="hhxx ttXS gox!2";    console.log(str1.match(/[xyz]/g));//["x", "x", "x"]    匹配x或y或z    console.log(str1.match(/[x-z]/g));//["x", "x", "x"]    匹配x到z间的字符    console.log(str1.match(/[^a-z]/g));//[" ", "X", "S", " ", "!", "2"]   匹配不在x到z间的字符    console.log(str1.match(/x|hhx/g));//["hhx", "x", "x"]    匹配x或hhx    console.log(str1.match(/x(?=!)/g));//["x"]   匹配以!跟随的x    console.log(str1.match(/x(?!!)/g));//["x", "x"]   匹配不以!跟随的x    console.log("a1-a3".match(/[1\-3]/g));//["1", "-", "3"] 转义字符的使用,匹配1或-或3    console.log("a1-a3".match(/[1-3]/g));//["1", "3"] 注意与上一行的区别    console.log(str1.match(/\s/g));//[" ", " "]   匹配空格,\S匹配不是空格    console.log(str1.match(/\w/g));//["h", "h", "x", "x", "t", "t", "X", "S", "g", "o", "x", "2"]   匹配[A-Za-z0-9_]    console.log(str1.match(/\W/g));//[" ", " ", "!"]   匹配不是[A-Za-z0-9_],即匹配特殊字符    console.log(str1.match(/\d/g));//["2"]   匹配不是[0-9_]    console.log(str1.match(/^hh/g));//["hh"]   匹配hh,而且hh必须是在搜索字符串的开头    console.log(str1.match(/2$/g));//["2"]   匹配2,而且2必须是在搜索字符串的结尾    console.log(str1.match(/.../g));//["hhx", "x t", "tXS", " go", "x!2"]   匹配任何字符,除了回车    console.log(str1.match(/hx*/g));//["h", "hxx"]   *表示匹配x(0到n次)    console.log(str1.match(/hx?/g));//["h", "hx"]   ?表示匹配x(01次)    console.log(str1.match(/hx+/g));//["hxx"]   +表示匹配x(至少1次)    console.log(str1.match(/hx{1,3}/g));//["hxx"]   {}表示匹配x(1次到3次)    console.log(str1.replace(/(hh)(xx)/g,'$2$1'));//xxhh ttXS gox!2   ()用在replace中进行替换

str1.match(/[xyz]/g)的意思说在str1中找寻满足模式[xyz]的字符串,/g表示寻找到满足的字符串后再接着寻找直到str1结束,每找到一个字符串就存放在数组里,最终返回这个数组,如果一个都没找到则返回null。

解释一下上面的str1.match(/hx?/g),看下其匹配的计算逻辑。首先要匹配的模式是hx?,那么开始从str1的第一个字符查起,字符h满足模式,这时并没有把h存入数组,而是继续查第二个字符h,这时hh不满足模式,那么就将h存入数组。接着查第二个字符h,满足模式,只要满足就继续查直到不满足,所以查到了hx,最终返回结果["h","hx"]

0 0
原创粉丝点击