正则表达式

正则表达式入门
  1. 字符组([]):允许匹配一组可能出现的字符。[]字符组中可以放多个条件例如,想要匹配数字的小写字母可以这样写:[0-9a-z]
  2. 正则表达式引擎在字符组中使用连字符(-)代表区间,依照这个规则,我们可以总结出三点:
    • 要匹配任意数字可以使用[0-9];
    • 如果想要匹配所有小写字母,可以写成[a-z];
    • 想要匹配所有大写字母可以写成[A-Z]。
匹配数据所有的数字、小写字母和大写字母:[0-9a-zA-Z]
  1. 转义符 \ :在正则中使用 \ 就可以进行对特殊符号进行转义,对 - 进行转义就可以表示为 -,即 - 就代表了 - 号本身。

  2. 可以通过在字符数组开头使用 ^ 字符实现取反操作,从而可以反转一个字符组(意味着会匹配任何指定字符之外的所有字符)。

n[^e] 的意思就是n后面的字母不能为 e
快捷匹配数字和字母
快捷方式描述
\w与任意单词字符匹配,任意单词字符表示 [A-Z]、 [a-z]、[0-9]、_
\d与任意数字匹配
  1. \s快捷方式可以匹配空白字符,比如空格,tab、换行等。
  2. \b 匹配的是单词的边界。
\bmaster\b 就仅匹配有边界的master单词。
  1. 快捷方式取反:快捷方式也可以取反,例如对于 \w的取反为\W,++将小写改写成大写即可++,其他快捷方式也遵循这个规则。
  2. 开始和结束:正则表达式中 ^指定的是一个字符串的开始,$指定的是一个字符串的结束。
  3. 任意字符:.字符代表匹配任何单个字符,它只能出现在方括号以外。
    值得注意的是: .字符只有一个不能匹配的字符,也就是换行符(\n),不过要让.字符与换行符匹配也是可以的,以后会讨论。
  4. 可选字符:? 的作用就是匹配它之前的字符0次或1次。
  5. 重复:在一个字符组后加上{N} 就可以表示在它之前的字符组出现N次。
  6. 重复区间:可能有时候,我们不知道具体要匹配字符组要重复的次数,比如身份证有15位也有18位的。
    这里重复区间就可以出场了,语法:{M,N},M是下界而N是上界。
eg:
\d{3,4} 既可以匹配3个数字也可以匹配4个数字,
不过当有4个数字的时候,优先匹配的是4个数字,
这是因为正则表达式默认是贪婪模式,即尽可能的匹配更多字符,
而要使用非贪婪模式,我们要在表达式后面加上 ?号。
  1. 有时候我们可能遇到字符组的重复次数没有边界,例如:/\d{3,}/ 闭区间不写即可表示匹配一个或无数个。

    还可以使用两个速写字符指定常见的重复情况,可以使用 + 匹配1个到无数个,使用 *代表0个到无数个。

    即:+ 等价于{1,},* 等价于{0,}

练习
1、现在请你使用正则表达式匹配手机号码,假设手机号码规则如下:
   必须是11位的数字;
   第一位数字必须以1开头,
   第二位数字可以是[3,4,5,7,8]中的任意一个,后面9个数是[0-9]中的任意一个数字。

   /1[345678][0-9]{9}/

2、请编写正则表达式,匹配以 http开头,以/结尾的所有数据。
    /http.*/$/
3、匹配电话号码,假设电话号码可以有下列两种方式:

    0XX-XXXXXXX,例如020-8810456;
    0XXXXXXXXX,例如0208810456。
    020 代表区号,8810456是电话号码,区号第一个数字必须是0,电话号码的第一个数字必须大于等于1。
    
    /^0\d{2}-?[1-9]\d{6}/
    
4、要求手机号要以 186、134-139 或 150-152开头,
    /^1((86)|(3[4-9])|(5[0-2])\d{8})/
总结
实例描述
[Pp]ython匹配 “Python” 或 “python”。
rub[ye]匹配 “ruby” 或 “rube”。
[abcdef]匹配中括号内的任意一个字母。
[0-9]匹配任何数字。类似于 [0123456789]。
[a-z]匹配任何小写字母。
[A-Z]匹配任何大写字母。
[a-zA-Z0-9]匹配任何字母及数字。
[^au]除了au字母以外的所有字符。
[^0-9]匹配除了数字外的字符。
实例描述
.匹配除 “\n” 之外的任何单个字符。要匹配包括 ‘\n’ 在内的任何字符,请使用象 ‘[.\n]’ 的模式。
?匹配一个字符零次或一次,另一个作用是非贪婪模式
+匹配1次或多次
*匹配0次或多次
\b匹配一个长度为0的子串
\d匹配一个数字字符。等价于 [0-9]。
\D匹配一个非数字字符。等价于 [^0-9]。
\s匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。
\S匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。
\w匹配包括下划线的任何单词字符。等价于’[A-Za-z0-9_]’。
\W匹配任何非单词字符。等价于 ‘[^A-Za-z0-9_]‘。
\b匹配一个长度为0的子串
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值