神刀安全网

js正则表达式


创建

js里创建正则对象有两种方法

  1. 字面量/pattren/flags
  2. 构造函数 new RegExp(pattren [,flags])
  • pattern:正则表达式的文本
  • flags:若指定,标志可以具有以下值的任意组合:
g:全局匹配 i:忽略大小写 m:多行匹配 u:Unicode; 将模式视为Unicode序列点的序列 y:粘性匹配; 仅匹配目标字符串中此正则表达式的lastIndex属性指示的索引(并且不尝试从任何后续的索引匹配)。 

元字符

在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符。

( [ { / ^ $ | ) ? * + .

字符类

一般情况下正则表达式一个字符(转义字符算一个)对应字符串一个字符,但我们可以使用元字符[]来构建一个简单的类, 比如[abcd]代表一个字符,这个字符可以是abcd四个字符中的任意一个。

取反

元字符[]组合可以创建一个类,我们还可以使用元字符^创建反向类/负向类,反向类的意思是不属于XXX类的内容,表达式[^abc]表示一个不是字符a或b或c的字符。

范围类

按照上面的说明如果希望匹配单个数字那么表达式是这样的

  //匹配一个字符,这个字符可以是0-9中的任意一个     var reg1 = /[0123456789]/    //匹配一个字符,这个字符可以是0-9中的任意一个     var reg2 = /[0-9]/    //匹配一个字符,这个字符可以是a-z中的任意一个     var reg3 = /[a-z]/    //匹配一个字符,这个字符可以是大写字母、小写字母、数字中的任意一个     var reg3 = /[a-zA-Z0-9]/ 

预定义类

字符 等价类 含义
. [^/r/n] 除了回车符和换行符之外的所有字符
/d [0-9] 数字字符
/D [^0-9] 非数字字符
/s [/t/n/x0B/f/r] 空白符
/S [^/t/n/x0B/f/r] 非空白符
/w [a-zA-Z_0-9] 单词字符,字母、数字下划线
/W [^a-zA-Z_0-9] 非单词字符

有了这些预定义类,写一些正则就很方便了,比如我们希望匹配一个可以是 ab+数字+任意字符 的字符串,就可以这样写了 /ab/d./

分组

有时候我们希望使用量词的时候匹配多个字符,而不是像上面例子只是匹配一个,比如希望匹配Byron出现20次的字符串,我们如果写成 Byron{10}的话匹配的是hunge+r出现10次。
怎么把Byron作为一个整体呢?使用()就可以达到此目的,我们称为分组:

    /(Byron){10}/ 

或用|来表示

var reg1 = /hello|world/  //等同于 var reg2 = /(hello)|(world)/ 

量词

如果我们希望匹配一个连续出现20次数字的字符串我们不需要写成这样:
/d/d/d/d...
为此正则表达式引入了一些量词

字符 含义
? 出现零次或一次(最多出现一次)
+ 出现一次或多次(至少出现一次)
* 出现零次或多次(任意次)
{n} 出现n次
{n,m} 出现n到m次
{n,} 至少出现n次

边界

正则表达式还提供了几个常用的边界匹配字符

字符 含义
^ 以xxx开头
$ 以xxx结尾
/b 单词边界 指[a-zA-Z_0-9]之外的字符
/B 非单词边界

司徒正美 javascript正则表达式

转载本站任何文章请注明:转载至神刀安全网,谢谢神刀安全网 » js正则表达式

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址