正则问题

正则格式

var reg = /       /;                      不能拼接

var reg = new RegExp(" ");   可以拼接字符串

 

元字符:

具有特殊意义

\:转义字符

^:以某一个元字符开始

$:以一个元字符结尾

\n:匹配一个换行符

.:除了\n以外的任意字符

 ():分组

x|y:x或者y中的一个

[xyz]:x或者y或者z中的一个

[^xyz]:除了三个以外的认可一个字符

[a-z]:a-z之间的任何一个字符

[^a-z]:除了a-z之间的任何一个字符

\d: 一个0-9之间的数字

\D:除了0-9之间的数字以外的任何字符

\b:

\w:数字 字母 下划线中任意一个字符[0-9a-zA-Z_]

\s:匹配一个空白字符  空格 一个制表符(tab)

 

代表出现次数

*:出现0-n次

+:出现1-n次

?:出现0或1

{n}:出现n次

{n,}:出现n到多次

{n,m}:出现n到m次

 

 

+? 只匹配最低个数   

(?:元字符)  分组不捕获

 

[ ] 中字符屏蔽特殊含义 [+-]  表示+ -中的一个 

() 改变优先级

var  reg = / ^18|19$/;

// 18 19 181 189 119 1819 819....

var reg =/^(18|19)$/; 

// 18 19

 

 

正则方法

reg.test(str)

reg.exec(str)         

 正则捕获    返回一个数组      返回符合的第一项内容  index:捕获内容在字符串中开始的索引位置    input:原始字符串

 没有 返回null

每次执行exec只捕获第一个匹配的内容。后续内容不匹配。

原因:正则 lastIndex 默认为0    不管执行几次都是从头开始

 

 

正则修饰符

g、i、m

global()  全局匹配        var reg = /  /g;  lastIndex 值将改变 变成最新值  

ingoreCase()  : 忽略大小写

multiline():多行匹配

 

 

exec  和 match   

match 是字符串方法

他们具体基本相同的功能 match 一次捕获所有 符合条件的 字符串

exec 需要执行多次

 

match方法 也有其局限性  当正则内出现分组 则无法匹配  而只能按最大正则匹配  

exec 可以匹配大正则 也可以匹配小正则

例:

 var reg=/^chen(\d+)$ /g;

var str ="chen12chen34chen56";

reg.exec(str);

返回"chen12","12"   index:0 

reg.macth(str)  

返回chen12

 

posted on 2017-12-24 10:28  cm笔记簿  阅读(165)  评论(0编辑  收藏  举报

导航