正则检验
定义:正则表达式是一种特殊的字符串模式,用于匹配一组字符串,就好比用模具做产品,而正则就是这个模具,定义一种规则去匹配符合规则的字符。
正则表达式 由一些普通字符和一些元字符组成。普通字符包括大小写的字母和数字,而元字符则具有特殊的含义。
基础语法"^([]{})([]{})([]{})$"
正则字符串= "开始([包含内容]{长度})([包含内容]{长度})([包含内容]{长度})结束"
标识主要包括:
1. i忽略大小写匹配
2. m多行匹配,即在到达一行文本末尾时还会继续寻常下一行中是否与正则匹配的项
3. g全局匹配 模式应用于所有字符串,而非在找到第一个匹配项时停止
字面量创建方式特殊含义的字符不需要转义,实例创建方式需要转义
var reg1 = new RegExp('\d'); // /d/
var reg2 = new RegExp('\\d') // /\d/
var reg3 = /\d/; // /\d/
代表次数的量词元字符
?等价于匹配长度{0,1}
*等价于匹配长度{0,}
+等价于匹配长度{1,}
{n,m}匹配长度n到m次
{n,} n到多次
{n} n次
元字符
\b :不会消耗任何字符只匹配一个位置,常用于匹配单词边界 如 我想从字符串中"This is Regex"匹配单独的单词"is"正则就要写成"\bis\b"\b不会匹配is两边的字符,但它会识别is两边是否为单词的边界
\B匹配不是单词开头或结束的位置
\s:匹配空格,包括空格、制表符、换页符等。
\S:匹配任意不是空白符的字符
\d等价于[0-9]
\D等价于[^0-9]
\w等价于[A-Za-z_0-9]
\W等价于[^A-Za-z_0-9]
\n换行符匹配。等效于\x0a和\cJ。
\r匹配一个回车符。等效于\x0d和\cM。
^开始
() 域段,分组
[]包含,默认是一个字符长度
[^]不包含,默认是一个字符长度
.任何单个字符(\.字符点,除换行符外)
|或
\转义
$结尾
[A-Z] 26个大写字母
[a-z] 26个小写字母
[0-9] 0至9数字
[A-Za-z0-9] 26个大写字母、26个小写字母和0至9数字
[\u4e00-\u9fa5]汉字
, 分割
运算符的优先级:
1.运算符 说明
2.\转义符
3.(), (?:), (?=), []括号和中括号
4.*, +, ?, {n}, {n,}, {n,m}量词限定符
5.^, $, \任何元字符、任何字符定位点和序列
6.|替换
正则的特性
1.贪婪性
所谓的贪婪性就是正则在捕获时,每一次会尽可能多的去捕获符合条件的内容。
如果我们想尽可能的少的去捕获符合条件的字符串的话,可以在量词元字符后加?
2.懒惰性
懒惰性则是正则在成功捕获一次后不管后边的字符串有没有符合条件的都不再捕获。
如果想捕获目标中所有符合条件的字符串的话,我们可以用标识符g来标明是全局捕获
正则的方法:
1.reg.test(str)用来验证字符串是否符合正则 符合返回true否则返回false
2.reg.exec()用来捕获符合规则的字符串
3.reg.compile()用于改变RegExp。既可以改变检索模式,也可以添加或删除第二个参数。
4.str.match(reg)如果匹配成功,就返回匹配成功的数组,如果匹配不成功,就返回null
5.str.replace()
6.str.search(reg);如果匹配成功,就返回匹配成功的字符串的位置,与indexOf相似
7.str = str.split(/reg/i);用来分割字符串
reg.compile(newReg); // newReg替换了reg