Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

JavaScript正则表达式 #18

Open
MrZWH opened this issue Oct 9, 2018 · 0 comments
Open

JavaScript正则表达式 #18

MrZWH opened this issue Oct 9, 2018 · 0 comments

Comments

@MrZWH
Copy link
Owner

MrZWH commented Oct 9, 2018

正则表达式在线工具:https://regexper.com

修饰符

  • g:global 全文搜索,不添加,搜索到第一个匹配停止
  • i:ignore case 忽略大小写,默认大小写敏感
  • m:multiple lines 多行搜索

元字符

  • 正则表达式由两种基本字符类型组成
    • 原意文本字符
    • 元字符
  • 元字符是在正则表达式中有特殊含义的非字母字符

字符类

  • 一般情况下正则表达式一个字符对应字符串一个字符

字符类取反

  • 使用元字符**^**创建反向类/负向类
  • 反向类的意思是不属于某类的内容
  • 表达式**[^abc]表示不是字符a或b或c**的内容。

范围类

  • 我们可以使用**[a-z]来表示从a到z的任意字符**
  • 这是个闭区间,也就是包含a和z本身

预定意类

边界

  • ^ 以xxx开始
  • $ 以xxx结束
  • \b 单词边界
  • \B 非单词边界

量词

  • ? 出现零次或一次(最多出现一次)
    • 出现一次或多次(至少出现一次)
    • 出现零次或多次(任意次)
  • {n} 出现 n 次
  • {n,m} 出现 n 到 m 次
  • {n,} 至少出现n次

贪婪模式

非贪婪模式

在量词后面加上?即可

分组

使用**()**可以达到分组的功能,使量词作用于分组

使用**|**可以达到或的效果

反向引用

忽略分组

不希望捕获某些分组,只需要在分组内加上?:就可以了

前瞻

  • 正则表达式从文本头部向尾部开始解析,文本尾部方向,成为“前”
  • 前瞻就是正则表达式匹配到规则的时候,向前检查是否符合断言,后顾/后瞻方向相反
  • JavaScript 不支持后顾
  • 符合不符合特定断言称为肯定/正向匹配和否定/负向匹配
  • 正向前瞻:exp(?=assert)
  • 负向前瞻:exp(?!assert)

对象属性

  • global
  • ignore case
  • multiline
  • lastIndex: 是当前表达式匹配内容的最后一个字符的下一个位置
  • source:正则表达式的文本字符串

RegExp.prototype.test(str)

RegExp.prototype.exec(str)

  • 使用正则表达式模式对字符串执行搜索,并将更新全局 RegExp 对象的属性以反映匹配结果
  • 如果没有匹配的文本则返回 null,否则返回一个结果数组
    • index 声明匹配文本的第一个字符的位置
    • input 存放被检索的字符串 string

非全局调用

  • 调用非全局的 RegExp 对象的 exec() 时,返回数组
  • 第一个元素是与正则表达式相匹配的文本
  • 第二个元素是与 RegExpObject 的第一个子表达式相匹配的文本(如果有的话)
  • 第三个元素是与 RegExp 对象的第二个子表达式相匹配的文本(如果有的话)

String.prototype.search(reg)

String.prototype.match(reg)

String.prototype.split(reg)

String.prototype.replace

  • String.prototype.replace(str, replaceStr)
  • String.prototype.replace(reg, replaceStr)
  • String.prototype.replace(reg, function)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant