正则表达式
// 创建正则表达式的方法有两种,第一种是字面量创建,第二种是通过构造函数创建 var reg1 = /abc/ var reg2 = new RegExp('abc') var str = 'a b c' var list = str.split(' ') // console.log(list) // result:["a", "", "b", "", "c"] // 这时候我们发现不能用完整的字符切割字符串时就需要提炼一个规则来进行切割 var list1 = str.split(/\s+/) console.log(list1)
// 元字符介绍 // "^" :^会匹配行或者字符串的起始位置,有时还会匹配整个文档的起始位置。 //"$" :$会匹配行或字符串的结尾 var str = 'abbcccbbbbbddbbbdabbbsbb'; console.log(/^ab\w+b$/.test(str)) // 表示必须以ab开头,并且是以b结尾才能匹配成功,也就是完全匹配
// "\b" :不会消耗任何字符只匹配一个位置,常用于匹配单词边界 如 我想从字符串中"This is Regex"匹配单独的单词 "is" 正则就要写成 "\bis\b" // \b 不会匹配is 两边的字符,但它会识别is 两边是否为单词的边界 //"\d": 匹配数字, //例如要匹配一个固定格式的电话号码以0开头前4位后7位,如0737-5686123 正则:^0\d\d\d-\d\d\d\d\d\d\d$ 这里只是为了介绍"\d"字符,实际上有更好的写法 // "\w":匹配字母,数字,下划线. // 例如我要匹配"a2345BCD__TTz" 正则:"\w+" 这里的"+"字符为一个量词指重复的次数 // "\s":匹配空格 // 例如字符 "a b c" 正则:"\w\s\w\s\w" 一个字符后跟一个空格,如有字符间有多个空格直接把"\s" 写成 "\s+" 让空格重复 // ".":匹配除了换行符以外的任何字符 // 这个算是"\w"的加强版了"\w"不能匹配 空格 如果把字符串加上空格用"\w"就受限了,看下用 "."是如何匹配字符"a23 4 5 B C D__TTz" 正则:".+" // "[abc]": 字符组 匹配包含括号内元素的字符 // 这个比较简单了只匹配括号内存在的字符,还可以写成[a-z]匹配a至z的所以字母就等于可以用来控制只能输入英文了, // 反义字符 // "\W" 匹配任意不是字母,数字,下划线 的字符 // "\S" 匹配任意不是空白符的字符 // "\D" 匹配任意非数字的字符 // "\B" 匹配不是单词开头或结束的位置 // "[^abc]" 匹配除了abc以外的任意字符 var str = 'abbcccbbbbbddbbbdabbbsbb' console.log(str.match(/b+/g)) // result:["bb", "bbbbb", "bbb", "bbb", "bb"],Js中match返回一个类数组对象
// 量词 // "*"(贪婪) 重复零次或更多 // 例如"aaaaaaaa" 匹配字符串中所有的a 正则: "a*" 会出到所有的字符"a" // "+"(懒惰) 重复一次或更多次 // 例如"aaaaaaaa" 匹配字符串中所有的a 正则: "a+" 会取到字符中所有的a字符, "a+"与"a*"不同在于"+"至少是一次而"*" 可以是0次, // 稍后会与"?"字符结合来体现这种区别 // "?"(占有) 重复零次或一次 // 例如"aaaaaaaa" 匹配字符串中的a 正则 : "a?" 只会匹配一次,也就是结果只是单个字符a // "{n}" 重复n次 // 例如从"aaaaaaaa" 匹配字符串的a 并重复3次 正则: "a{3}" 结果就是取到3个a字符 "aaa"; // "{n,m}" 重复n到m次 // 例如正则 "a{3,4}" 将a重复匹配3次或者4次 所以供匹配的字符可以是三个"aaa"也可以是四个"aaaa" 正则都可以匹配到 // "{n,}" 重复n次或更多次 var str = 'abcbbbbbcddbbbdacbbbcsbbc' console.log(str.match(/ab\w*c/)) // result:abcbbbbbcddbbbdacbbbcsbbc,当我们将正则表达式改为/ab\w*?c/非贪婪模式,输出的就是abc
var str = 'abbcccbbbbbabcddbbbdababcbbabcsbabcb' var reg = /abc/g console.log(reg.exec(str)) // 返回一个类数组对象 console.log(reg.test(str)) // 判断字符串是否匹配正则表达式 var str = 'how old are you|abc'; // 大小写字母表示:[a-zA-Z]+ console.log(str.match(/\b[a-zA-Z]+\b/g));