正则表达式(上)——定义正则表达式

本篇章介绍正则表达式,分为上定义正则表达式(上)、字符串中的正则API和RegExp对象(下)两部分

正则表达式(Regular Expression):专门描述字符串中字符出现规则的表达式。

因为程序不认识人类语言中的词汇,所以才需要程序员用正则表达式教程序认识人类语言中的词汇。

1.定义正则表达式

1.1 普通字符

  • 直接通过完整字符进行匹配。

比如:

正则表达式为:西南大学;
匹配字符串为:西南大学。

1.2 字符集

(1)普通字符集

  • 当在规则中需要某一字符拥有多种备选字时,可以使用字符集形式进行匹配。匹配时,只要与”[]”中的任意字符相匹配,就满足规则。

  • 语法
    :[备选字符集]

  • 比如:

      正则表达式为:[西南][大学];
      匹配字符串为:西大、西学、南大、南学。
    

(2)字符集简写形式

  • 由于正则表达式经常使用字符集,所以可以使用字符集简写形式方便使用:
    ①[0-9]:匹配0-9中的一位数字;
    ②[a-z]:匹配a-z中的一位小写字母;
    ③[A-Z]:匹配A-Z中的一位大写字母;
    ④[A-Za-z]:匹配一位字母;
    ⑤[0-9A-Za-z]:匹配一位数字或者字母;
    ⑥[\u4e00-\u9fa5]:匹配一位汉字。

  • 比如:
    利用字符集简写形式定义车牌号规则:

      [\u4e00-\u9fa5][A-Z]·[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]
    

(3)预定义字符集

  • 正则表达式语法为四种常用的字符集定义了最简化的写法,称为预定义字符集。
    ①\d:匹配一位数字;
    ②\w:匹配一位字符、数字或_,等效于[0-9A-Za-z_];
    ③\s:匹配一位空字符,可以匹配空格、制表符Tab等空白;
    ④.:匹配所有文字(通配符)。

  • 比如:

      利用预定义字符集简写手机号规则:
      1[3-8]\d\d\d\d\d\d\d\d\d
    

1.3 数量词

(1)普通数量词

数量词是专门规定一个字符集出现次数的规则。只要一个字符集在规则中可能连续反复出现多次,就可以用数量词以简写方式定义出现次数。
数量词紧跟在其修饰的字符集之后,默认修饰相邻的前一个字符集。

  • 比如:

      手机号中连续的9个数字\d,可进一步简写为:
      1 [3-8] \d{9}
      利用数量词进一步简写手机号规则:
      1[3-8]\d{9}
      利用数量词进一步简写车牌号规则:
      [\u4e00-\u9fa5][A-Z]·[0-9A-Z]{5}
    

(2)有明确数量边界的数量词

  • 字符集{n}: 表示字符集必须重复n次,不能多也不能少;
    字符集{n,m}: 表示字符集至少重复n次,最多重复m次;
    字符集{n,}: 表示字符集匹配的内容至少重复n次,多了不限。

(3)有明确数量边界的数量词

	*  可有可无,多了不限;
	?  可有可无,最多一次;
	+  至少一次,多了不限。

1.4 选择和分组

(1) 选择

  • 选择,是指在多个子规则中选其一匹配。当需要在多个子规则中选其一匹配时,就可以使用选择。

  • 语法:
    子规则1|子规则2
    注意:“|”选择符只分左右,不考虑单个字符。

  • 比如:

      正则表达式为:西南|大学;
      匹配字符串:西南、大学。
    

(2) 分组

  • 分组,将多个子规则视为一组,再和分组外的规则匹配。当希望将多个子规则视为一个整体,再和其它规则匹配时,就可以使用分组。

  • 语法:
    其它规则 (多个子规则)

  • 比如:

      正则表达式为:西([南大]|学);
      匹配字符串为:西南、西大、西学。
    

1.5 指定匹配位置

  • 在一个字符串中有三个位置比较特殊:字符串开头、字符串结尾以及英文字母中每个单词中间的空白部分(单词边界)。如果只希望匹配特殊位置上的关键词时,则可以使用特殊符号表示特殊位置:
    (1)^ 表示字符串开头;
    (2)$ 表示字符串结尾;
    (3)\b 表示单词边界,它可以匹配空格、标点符号、字符串开头或结尾等可以将一个单词与其他单词分隔开的符号。

  • 比如:

      匹配开头的空字符串:
      ^\s+
      找到每个单词的首字母:
      \b[a-z]
    
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值