zoukankan      html  css  js  c++  java
  • JavaScript学习笔记-正则表达式(语法篇)

    正则表达式的模式规则是由一个字符系列组成的,包括所有字母和数字在内;
    大多数的字符(所有字母和数字)都是按字符的直接量来描述带匹配的字符;
    一些具有特殊语义的字符按照其特殊语义来进行匹配,有些字符需要通过()进行转义;
    字符 匹配
    字母,数字 自身
    o NUL字符u0000
    制表符u0009
    换行符u000A
    v 垂直制表符u000B
    f 换页符u000C
    回车符u000D
    Xnn xnn 由十六进制数nn指定的拉丁字符,如x0A等价于
    uxxxx 由十六进制数xxxx指定的Unicode字符,如u000A等价于
    cX 控制字符^X,如cJ等价于
    正则表达式中具有特殊含义的标点符号:(某些符号只有在正则表达式的某些上下文中才具有某种特殊含义)
    ^ $ . * + ? = ! : | / ( ) [ ] { } 还有连字符'-'
    若要将以上特殊符号按直接量进行匹配,则必须使用前缀来转义,其它符号则无需转义直接按字面量匹配;

     
    正则表达式的重复字符语法:
     
    以上是贪婪式匹配(尽可能多的匹配),若要进行非贪婪匹配(若可以则尽可能少的匹配)只需在后面加个'?',如:??,+?,*?,{1,5}?,{1,}?,在它们后面加'?'表示若可以则取下限值,不可以的情况如/a+?b/匹配aaaab时结果是aaaab而不是ab,因为正则表达式总是会从第一个字符开始匹配的,所以他无法跳过前面的aaa
    选择项如/ab|cd|abcd/匹配ab或cd或abcd,尝试匹配是从左到右,直到发现匹配项,就忽略其他选项;
    圆括号的作用1:把单独的项组合成子表达式,如/(ab|cd)+|ef/,可以匹配ef,也可以匹配ab或cd的多次重复
    圆括号的作用2:在完整的模式中定义子模式,当成功匹配完整模式时,可以从目标中抽出和子模式相匹配的部分,如/[a-z]+(d+)/,匹配一个或多个小写字母后面跟一位或多位数字,匹配成功则抽取数字部分;
    圆括号的作用3:允许在同一个表达式的后部引用前面的子表达式所匹配的字符串(引用:通过在后面加一位或多位数字来指定第几个左括号),如/([Jj]ava([Ss]crip)?) siss(funw*)/,2表示引用与第三个左括号内的子表达式([Ss]crip)相匹配的字符串;/(['"])[^'"]*1/表示匹配位于单引号对或双引号对之间的0个或多个字符;
    正则表达式中不允许单引号和双引号之间的相互嵌套,如/(['"])[^1]*1/这是错误的,中间的1被嵌套了
     
     
    指定匹配位置:锚
     
    如:
    /Java/以边界来匹配单词Java,
    匹配单词JavaScript可以用/^JavaScript$/,
    /B[Ss]cript/与JavaScript和postscript匹配,不匹配script和Scripter,
    /[Jj]ava ([Ss]cript)?(?=:)/只匹配后面带冒号的,匹配JavaScript:The中的JavaScript,不匹配JavaScript The,
    /Java(?!Script)([A-Z]w*)/可以匹配Java后跟一个大写字母和任意多个ASC2字符,但Java后面不能跟Script
     
    修饰符:用以说明高级匹配模式的规则,修饰符放在正则表达式/../之后,可以任意组合,如/java/ig表示匹配不区分大小写且在全文中匹配所有
  • 相关阅读:
    Linux防火墙:iptables禁IP与解封IP常用命令
    php7安装 event扩展
    laravel5.5 调用系统自带登陆认证auth
    linux 搭建rap记录
    微信小程序silk格式转码成mp3格式
    抓包软件
    laravel 微信小程序登录 加密解密扩展包
    mysql索引
    sphinx-for-chinese在windows下安装与使用方法
    sphinx增量索引和主索引来实现索引的实时更新
  • 原文地址:https://www.cnblogs.com/susufufu/p/5705791.html
Copyright © 2011-2022 走看看