本文已参与「新人创作礼」活动,一起开启掘金创作之路。
正则表达式浅显知识点整理
概念
正则表达式(英语:Regular Expression,在代码中常简写为regex、regexp或RE)使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式。
搜索模式可用于文本搜索 和 文本替换。
什么是正则表达式?
正则表达式是由一个字符序列形成的搜索模式。
当你在文本中搜索数据时,你可以用搜索模式来描述你要查询的内容。
正则表达式可以是一个简单的字符,或一个更复杂的模式。
正则表达式可用于所有文本搜索和文本替换的操作。
语法:/正则表达式主体/修饰符(可选) 或 new RegExp('正则表达式')
修饰符
i:大小写不敏感g:全局匹配m:多行匹配
正则表达式模式
方括号用于查找某个范围内的字符:
[abc]:匹配方括号中的任意一个字符[^abc]:匹配方括号中未包含的任意字符[0-9]:查找任何从 0 至 9 的数字[a-z]:查找任何从小写 a 到 小写 z 的字符[A-Z]:查找任何从大写 A 到 大写 Z 的字符。[A-z]:查找任何从大写 A 到 小写 z 的字符。(x|y):匹配x或y。
特殊字符:
^:匹配字符头。$:匹配字符末尾。*:匹配任意次,零次 或 多次。+:匹配至少一次,一次或多次。?:匹配零次 或 一次。{n}:n为正整数,匹配n次。{n,}:n为正整数,至少匹配n次。{n,m}:n 和 m均为正整数,但n <= m,匹配最少n次且最多m次。(n):匹配n,并获取。(?:n):匹配n,但不获取。(?=n):正向肯定预查,匹配任何其后紧接指定字符串 n 的字符串。(?!n):正向否定预查,匹配任何其后没有紧接指定字符串 n 的字符串。(?<=n):反向肯定预查,与正向肯定预查类拟,只是方向相反。(?<!n):反向否定预查,正向否定预查类拟,只是方向相反。.:匹配单个字符,除了换行(\n) 和 行结束符 (\r) 。\b:匹配一个单词边界,就是单词和空格间的位置。\B:匹配非单词边界。\d:匹配一个数字字符,相当于[0-9]。digit\D:匹配非数字字符,相当于[^0-9]。\f:匹配一个换页符。\n:匹配一个换行符。\r:匹配一个回车符。\s:匹配任何空白字符,包括空格、制表符、换页符等等,相当于[ \f\n\r\t\v]。\S:匹配任何非空白字符,相当于[^ \f\n\r\t\v]。\t:匹配一个制表符。\v:匹配一个垂直制表符。\w:匹配数字、字母及下划线,相当于[A-Za-z0-9_]。\W:匹配非单词字符,相当于[^A-Za-z0-9_]。\xxx:匹配以八进制数 xxx 规定的字符。\xdd:匹配以十六进制数 dd 规定的字符。\uxxxx:匹配以十六进制数 xxxx 规定的 Unicode 字符\0:查找 NULL 字符。
常用正则表达式
用户名:/^[a-z0-9_-]{3,16}$/ -- 包含小写字母、数字和下划线,3到16位
密码:/^[a-z0-9_-]{6,18}$/ -- 包含小写字母、数字和下划线,6到18位
支持正则表达式的 String 对象的方法
-
search():检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串,并返回子串的起始位置。 -
replace():字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。 -
match():检索字符串内指定的值,或找到一个或多个正则表达式的匹配。var str = "hello world"; // search // 使用正则表达式 // 全局匹配o console.log(str.search(/o/i)) // 4 // 使用字符串 console.log(str.search("o")) // 4 // replace // 使用正则表达式 console.log(str.replace(/l/gi, "h")) // hehho worhd // 使用字符串 console.log(str.replace("l", "h")) // hehlo world // match console.log(str.match(/o/g)) // ['o', 'o']
RegExp 对象方法
使用 test()
-
用于检测一个字符串是否匹配某个模式。
-
如果字符串中有匹配的值返回 true ,否则返回 false。
var patt = /e/ console.log(patt.test("can you speek chinese")) //true // 可以不用设置正则表达式的变量 console.log(/e/.test("can you speek chinese")) //true
使用 exec()
-
用于检索字符串中的正则表达式的匹配。
-
如果字符串中有匹配的值返回该匹配值,否则返回 null。
// 用于搜索字符串中的字母 "e": // ['e', index: 10, input: 'can you speek chinese', groups: undefined] console.log(/e/.exec("can you speek chinese"))
使用 toString()
-
返回正则表达式的字符串值:
var patt = new RegExp("can you speek chinese", "g"); console.log(patt.toString()) // /can you speek chinese/g