常用正则学习

一、实例化RegExp

1、字面量
2、构造函数

字面量
var reg = /\bis\b/g;(\b单词边界)
构成函数
var reg = new RegExp('\bis\b','g');

g 全文检索
i 忽略大小写
m 多行搜索

二、元字符

正则表达式由两种字符类型组成:
1、原义文本字符
2、元字符(代表有特殊含义的非字母字符)

    • ? $ ^ . | \ ( ) { } []

三、字符类

可以使用元字符[]构建一个简单的类([abc]表示将a或b或c归于一类,表达式可以匹配这类字符)
字符类取反([^abc])

四、范围类

可以使用[a-z]标识a到Z,类内部可以连写[a-zA-Z]

五、预定义类

. [^\r\n] 除了回车换行之外的所有字符
\d [0-9] 数字字符
\D [^0-9] 非数字字符
\s 空白符
\S 非空白符
\w [a-zA-Z_0-9] 单词字符(数字、字母、下划线)
\W [^a-zA-Z_0-9] 非单词字符
^ 以开始
$ 以结束
\b 单词边界
\B 非单词边界

六、量词

?最多出现一次

  • 至少出现一次
  • 任意次
    {n} 出现n次
    {n,m} 出现n到m次
    {n,} 至少出现n次

七、贪婪模式

默认贪婪模式 '12345678'.replace(/\d{3,6}/,'A')==>'A78'
非贪婪模式 '123456789'.replace(/\d{3,6}?/,'A')==>'AA78'

八、分组

小括号()达到分组效果
'a1b2c3d4'.replace(/([a-z]\d){3}/,'A')==>'Ad4'
或 |达到效果
反向引用
'2016-04-24'.replace(/(\d{4})-(\d{2})-(\d{2})/g,'2/1/$3')
忽略分组 加?: (?:a)(b)

九、前瞻

向前检查是否符合断言
正向前瞻 exp(?=assert) 'a3fd123'.replace(/a-z/g,'A');==>"a3fA123"
负向前瞻(取反) exp(?!assert) 'a3fd123'.replace(/a-z/g,'A');==>"a3Ad123"

十、对象方法

reg.test('a') 测试传入字符串是否符合正则规则 符合返回true
reg.exec('a') 不符合返回null,符合返回数组[index,input] index--匹配文本第一个字符的位置 input--存放被检索的字符串

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容