--- title: 正则表达式 date: 2018-04-04 11:45:43 tags: [正则表达式] categories: 'JS' --- # 正则的介绍 正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符")。 正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。 正则表达式是烦琐的,但它是强大的,学会之后的应用会让你除了提高效率外,会给你带来绝对的成就感。 ## 修饰符 ### i 执行对大小写不敏感的匹配。 ### g 执行全局匹配(所有,而不是找到一个后停止匹配)。 ### m 执行多行匹配。 ## 方括号 ### [abc] 查找方括号之间的任何字符。 ### [^abc] 查找任何不在方括号内的字符。 ### [0-9] 查找任何从 0 至 9 的数字。 ### [a-z] 查找任何从小写 a 到 z 的字符。 ### [A-Z] 查找任何从大写 A 到 Z 的字符。 ### [A-z] 查找任何从大写 A 到小写 z 的字符。 ### [adgk] 查找括号中给定的字符集。 ### [^adgk] 查找除括号内之外的所有字符。 ### [red|blue|green] 查找任何指定的选项。 ## 元字符 ### '.' 查找单个字符,除了换行符和结束符。 ### \w 查找单词字符。 ### \W 查找非单词字符。 ### \d 查找数字。 ### \D 查找非数字。 ### \s 查找空白字符。 ### \S 查找非空白字符。 ### \b 匹配单词边界。 ### \B 匹配非单词边界。 ### \0 查找null字符。 ### \n 查找换行符。 ### \f 查找换页符。 ### \r 查找回车符。 ### \t 查找制表符。 ### \v 查找垂直制表符。 ### \xxx 查找以八进制 xxx 规定的字符。 ### \xdd 查找以十六进制 dd 规定的字符。 ### \uxxxx 查找以十六进制 xxxx 规定的 Uicode 字符。 ## 量词 ### n+ 匹配任何包含至少一个 n 的字符串。 > eg: /a+/ 匹配 “candy” 中的 “a”, “caaaaaandy” 中的 “a”。 ### n* 匹配任何包含零个或多个 n 的字符串。 > eg: /bo*/ 匹配 “a ghost booooed ” 中的 “boooo”,“hell by” 中的 ”b”。 ### n? 匹配任何包含零个或一个 n 的字符串。 > eg: /e?le?/ 匹配 “angel” 中的 “el”,“angle” 中的 “le”。 ### n(X) 匹配包含 X个 n 的序列的字符串。 > eg: /a(2)/ 不匹配 “candy” 中的 “a”,但是匹配 “caandy”,“caaandy”。 ### n{X,} X 是一个正整数,前面的模式 n 连续出现至少 X 次匹配。 > /a{2,}/ 不匹配 “candy”,匹配 “caandy” 和 “caaaandy” 中的所有 “a“。 ### n{X, Y} n 出现至少 X 次,至多 Y 次。 > /a{1,3} 匹配 ”candy“ 的 ”a“,”caandy“ 中的 ”aa“,“caaaandy” 前三个 “a”。 ### n$ 匹配任何以 n 结尾的字符串。 ### ^n 匹配任何以 n 开头的字符串。 ### ?=n 匹配任何其后紧接指定 n 的字符串。 ### ?!n 匹配任何其后没有指定 n 的字符串。 ## RegExp 对象方法 ### compile 编译正则表达式。 ### exec 检索字符串中指定的值。返回找到的值,并确定其位置。 ### test 检索字符串中指定的值,返回 true or false。 ## String 对象的正则方法 ### search 检索与正则表达式相匹配的值。 > eg: str.search("blue") 返回的是 blue 出现的字符下标(大小写敏感)。 ### match 找到一个或者多个正则表达式的匹配。 > eg: str.match(/ain/g) 返回所有出现的 ain (大小写敏感)。 ### replace 替换与正则表达式匹配的字串。 > eg: str.replace(/blue/g,"red") 替换所有 blue 为 red。 ### split 把字符串分割为字符串数组。 > string.split(separator,limit) 在 separator 指定位置分割, 返回内容不超过 limit 长度。