JavaScript学习之三:正则表达式

一、简单模式:

  1. 元字符: (  [ { \ ^ $ | ) ? * + . 使用这些元字符,都必须进行转义。
  2. 特殊字符:\t \n \r \f  \a \e \cX \b \v \0
  3. 字符类:测试字符的组合。
  • 简单类:要匹配字符a, b, c字符类应是[abc].
  • 负向类:除了特定一些,想匹配所以字符。匹配除了a、b所有字符是[^ab].
  • 范围类:从a 到 z 应是[a-z].
  • 组合类:其他类组合而成的字符类。假设要匹配所以从a到z的字母以及从1到4的数字,以及一换行符应是[a-m1-4\n].
  • 预定义类:
    . 除了换行和回车之外的任意字符
    \d 数字
    \D 非数字字符
    \s 空白字符
    \S 非空白字符
    \w 单词字符
    \W 非单词字符

4.量词:可以指定特定模式出现的次数。

  • 简单量词:

出现0次或一次
* 出现零次或多次(任意次)
+ 出现一次或多次(至少一次)
{n} 一定出现n次
{n,m} 至少出现n次但不超过m次
{n,} 至少出现n次

  • 贪婪的、惰性的和支配性的量词。

贪婪的:先匹配整个字符串,如果没有匹配,去掉最后字符串的最后一个字符,并再次尝试,依次。。

惰性的:现看字符串中的第一个字符串是不是匹配,如果不够,就读入下一个字符串,再匹配。。。

支配量词:只尝试匹配整个字符串。

贪婪 惰性 支配 描述
?? ?+ 出现0次或一次
* *? *+ 出现零次或多次(任意次)
+ +? ++ 出现一次或多次(至少一次)

{n}

{n}?

{n}+

一定出现n次
{n,m} {n,m}? {n,m}+ 至少出现n次但不超过m次
{n,} {n,}? {n,}+ 至少出现n次

 

二、复杂模式:

  1. 分组:"dogdog" ->  /dog{2}/g
  2. 反向引用:分组都被存放一个特殊的地方以备将来使用,这些存储在分组中的特殊值,我们称之为反向引用。RegExp.$1
  3. 候选:同时匹配"red","black" 可以是/(red|black);
  4. 非捕获性分组:创建反向引用的分组是捕获性分组,而非捕获性分组不创建反向引用。
  5. 前瞻:当某一个字符出现在令一个字符之前才去捕获它。,创建正向前瞻要将模式放在(?=)如:/bed(?=room)/,负向前瞻放在(?!)之间。
  6. 边界:行开头:^     行结尾:$      单词的边界: \b       非单词的边界:    \B  如:/(\w+)\.$/
  7. 多行模式:/(\w+)$/gm

三、理解RegExp对象:

  • global: g表示
  • ignorecase 用i表示
  • lastindex:下次匹配从哪个字符开始
  • multiline:用m表示
  • source: 正则表达式的元字符形式。

四、常用模式:

  1. 验证日期:var reDate =/(?:[1-9]|[12][0-9]|3[01])\/(?:0[1-9]|1[0-2])\/(?:19|20\d{2})/
  2. 电子邮件:var eEmail = /^(?:\W+\.?)*\w+@(?:\w+\.?)*\w+$/;

 

你可能感兴趣的:(JavaScript)