美文网首页
正则表达式

正则表达式

作者: 欢西西西 | 来源:发表于2021-12-08 09:01 被阅读0次

    regular expressions

    1. ()既可以表示分组,又可以用来捕获。有些分组是不需要被捕获的,这会造成多出了一些无用的捕获。(?:)可以仅分组,不捕获

    2. 检验字符串是否符合要求:/regexp/.test(str) ,返回布尔值

    3. 局部匹配: str.match(/regexp/) 匹配到第一个符合的字符串就结束,返回数组 arr,arr[0]为符合此 regexp 的第一个字符串,arr[1]为用()捕获到的字符串。未匹配到时返回 null。

    4. 全部匹配: str.match(/regexp/g) 匹配符合的全部字符串,放到数组里返回,未匹配到时返回 null。

    5. 字符串替换 str.replace(/regexp/, str2); 将 str 里符合 regexp 的字符串替换为 str2。replace 方法的第二个参数也可为 function,function 入参 1:匹配,入参 2:捕获。类似局部匹配的返回值

    6. 反向引用: 使用\1 引用第一个捕获条件捕获到的字符串,相当于是动态的正则 例:/ad(\d{2})[陕甘宁]\1/ 可以匹配'ad23 陕 23' 'ad11 陕 11' 'ad90 甘 90';如果引用的是不存在的分组,那它表示的就是普通的转义

    7. 创建固定的正则,可以直接使用字面量。如果要动态构建,需 new RegExp() 传入拼接的字符串

    8. 匹配任意字符 [\s\S]\* : \s 匹配空白字符 \S 匹配非空白字符

    9. [\w\W]\*? [\w\W]能匹配到换行呢; \w 匹配单词字符; [a-z][a-z][0-9]; \W 匹配非单词字符

    10. (a(bc)) capture sub-group

    11. 或: [abc]单字或 (abc|cdf|fgb)多字或 [a-z]表示范围,但要表示 a 或-或 z,可以写成[az-]或者[a\-z]使它们不构成范围

    12. w:word d:digit s:space b:boundary r:return

    13. \b 匹配一个单词边界 : 例如/er\b/可以匹配'never',但不能匹配'verb',只要 er 后面跟的不是字母、数字、下划线(就是 js 里能用来命名的字符),都算单词边界; \B 非单词边界

    14.零宽断言

    14.1 正向否定断言(?!):不允许该位置后符合括号里的情况,零宽,意味着不会返回匹配的字符

    14.2 正向断言(?=)

    给整数每3位加一个逗号:numStr'.replace(/(\d)(?=(\d{3})+$)/g, '$1,')

    14.3 负向断言(?<=):该位置之前要符合括号里的情况

    14.4 负向否定断言(?<!):不允许该位置之前符合括号里的情况

    15. \r \n 回车符

    16. ^匹配起始(如果开启了匹配多行模式,也匹配每行的开始), $匹配结束

    17. 使用完 match\test 后,可以使用 Regexp.$1 拿到刚匹配完后捕获的分组引用;字符串的正则相关的方法:search\replace\split\match;正则对象操作字符串的方法:test\match

    18. 贪婪匹配和惰性匹配:所谓的"贪婪"的意思就是,如果符合要求就一直往后匹配,一直到无法匹配为止,这就是贪婪模式。所谓的惰性模式就是一旦匹配到合适的就结束,不再继续匹配下去了;

    - 贪婪模式的标识符 +          ?       *       {n}       {n,}       {n,m} 

    - 惰性模式的标识符 +?       ??     *?      {n}?      {n,}?      {n,m}?

    相关文章

      网友评论

          本文标题:正则表达式

          本文链接:https://www.haomeiwen.com/subject/ddvgxrtx.html