正则表达式学习(一)

一、整体基础梳理

学习了阮一峰的关于RegExp对象的教程,很全面。自己整理如下,加深印象:

1. 新建正则表达式

var regex = /xyz/; var regex = /xyz/i
//等价于:
var regex = new RegExp('xyz'); var regex = new RegExp('xyz','i')

2.1 正则对象属性

1.与修饰符相关属性(global,ignoreCase,multiline):返回布尔值
2.与修饰符无关(lastIndex,source(返回正则表达式字符串形式))

2.2 正则对象方法

test():返回布尔值。当前模式是否匹配表达式
new RegExp(r).test(str)
exec():返回匹配结果。两个属性(index,input)
new RegExp(r).exec(str)

3. 与正则相关的字符串方法

String.prototype.match(reg):返回数组包含全部匹配子字符串
String.prototype.search(reg):按照正则表达进行搜索,返回一个整数,匹配开始的位置
String.prototype.replace(reg, replacement):替换匹配成功的字符串
String.prototype.split(reg):按规则进行字符串分割,返回分割的数组

4. 匹配规则

字面量字符和元字符
(点字符 **.** ,位置字符 **^ & **,选择符 |  )
转义符 \
 ( ^、.、[、$、(、)、|、*、+、?、{和\\) 注意:用构造函数时要双斜杠 \\\
字符类:

例子:

- ^once          表示该模式只匹配那些以once开头的字符串
- bucket$        这个模式与"bucket"匹配,与"buckets"不匹配。
- ^bucket$       字符^和$同时使用时,表示精确匹配(字符串与模式一样)
- ^[a-z][0-9]$   匹配一个字母和数字组成的字符串,如t4,f3等

- [0-9\.\-]      匹配所有的数字,句号和减号 

- [^\\\/\^]      除了(\)(/)(^)之外的所有字符

- [ \f\r\t\n]    匹配所有的白字符
  • ^表示字符串的开头,但它还有另外一个含义。当在一组方括号里使用^是,它表示”非”或”排除”的意思,常常用来剔除某个字符。
    ^[^0-9][0-9]$ 与”&5”、”g7”及”-2”是匹配的,但与”12”、”66”是不匹配的。

  • /^(Chapter|Section) [1-9][0-9]{0,1}$/ 替换使用 | 字符来允许在两个或多个替换选项之间进行选择

预定义模式:
- \d 匹配0-9之间的任一数字,相当于[0-9]。
- \D 匹配所有0-9以外的字符,相当于[^0-9]。
- \w 匹配任意的字母、数字和下划线,相当于[A-Za-z0-9_]。
- \W 除所有字母、数字和下划线以外的字符,相当于[^A-Za-z0-9_]。
- \s 匹配空格(包括制表符、空格符、断行符等),相等于[\t\r\n\v\f]。
- \S 匹配非空格的字符,相当于[^\t\r\n\v\f]。
- \b 匹配词的边界。
- \B 匹配非词边界,即在词的内部。

二、常用应用场景

1. 验证用户输入

是否EMail:

/^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/

密码强度:

^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$
密码的强度必须是包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间。

身份证号码:

15位:^[1-9]\\d{7}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}$
18位:^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}([0-9]|X)$
2. 提取URL链接
^(f|ht){1}(tp|tps):\\/\\/([\\w-]+\\.)+[\\w-]+(\\/[\\w- ./?%&=]*)?
3. 提取网页中图片
\\< *[img][^\\\\>]*[src] *= *[\\"\\']{0,1}([^\\"\\'\\ >]*)
4. 提取网页超链接
(<a\\s*(?!.*\\brel=)[^>]*)(href="https?:\\/\\/)((?!(?:(?:www\\.)?'.implode('|(?:www\\.)?', $follow_list).'))[^"]+)"((?!.*\\brel=)[^>]*)(?:[^>]*)>

参考链接:知道这20个正则表达式,能让你少写1,000行代码
Regex在线测试工具

  • 9
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值