正则相关的知识分享
正则:
概念:描述或匹配一系列符合某种规则的字符串
作用:数据验证 内容检索 内容替换 内容过滤
//创建正则对象
//通过实例化对象
letreg=newRegExp("正则表达式"+变量,"模式修正符")
模式修正符:g:global全局(下一次执行从上一次之后位置) i:不区分大小写m:可以换行
//通过字面量的方式
letreg=/ 正则表达式 /模式修正符
/为定界符正则对象的常用方法:
reg.test(str) 检测正则对象是否能够匹配str 返回true false
reg.exec(str) 检测正则对象是否能够匹配str 如果能匹配返回一个拥有特殊属性的数组,如果不能匹配返回null
正则表达式:
使用场景:1.正则对象 2.str.split(正则对象) 3.str.replace(正则对象,被替换的内容) 4.str.search(正则对象)
原子:正则表达式中最小的内容
\d 0-9
\w 数字字母下划线
\s 空白,\n,\r,\t
\D 除了0-9以外的字符
\W 除了数字字母下划线以外的字符
\S 除了空白,\n,\r,\t
原子表:[ ]
letreg=/[a-z]/g匹配小写字母
letreg=/[a-zA-Z]/g匹配所有字母
元字符:
. 所有的字符
| 或
原子组:() 原子组的内容会默认存储在内存中,在后面如果一模一样可以\1调用
letreg=/(山|陕)西/g
letreg=/<div>box<\/div>/===letreg=/<(div)>box<\/\1>/ // \为转译字符
(?:xxx)不将xxx存储到内存中,并且不可调用
正则中的数量:
*:0个或多个
letreg=/\d*/g
+:1个或多个
?:0个或1个
{11}:11个 {15,18}:15到18个 {6,}六个或六个以上个
贪婪吝啬: *? 加问号将尽可能取多变成尽可能少取
边界判断:
^开始 $结束
letreg=/^\d{7}$/
\b 单词边界
\B 非单词边界
模式修正符:
g全局
i不区分大小写
m换行,多行
举例:
//正则汉字字母数字下划线返回bool
function isNotEmpty(str) {
var regex =newRegExp("^([\u4E00-\uFA29]|[\uE7C7-\uE7F3]|[a-zA-Z]|[0-9]|[_]){1,10}$");
return regex.test(str);
}