• JavaScript 正则表达式


    正则表达式:

    正则表达式(Regular(正常的,常规的) Expression),又称正规表示法、常规表示法。

    正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。

    JavaScript 正则表达式上——基本语法   JavaScript正则表达式下——相关方法

    可以参考这篇文章,比较像手册,除了转义符号 “\” 都写错为“/”。 手册

    定义

    JavaScript种正则表达式有两种定义方式,定义一个匹配类似 <%XXX%> 的字符串

    1. 构造函数

    var reg=new RegExp('<%[^%>]+%>','g');
    注意:如果正则表达式中有变量,则使用构造函数是比较方便的。

    2. 字面量

    var reg=/<%[^%>]%>/g;
    • g: global,全文搜索,默认搜索到第一个结果就会停止
    • i: ingore case,忽略大小写,默认大小写敏感
    • m: multiple lines,多行搜索(更改^ 和$的含义,使它们分别在任意一行对待行首和行尾匹配,而不仅仅在整个字符串的开头和结尾匹配)

    方法:

    1.     reg.test(strObject)

           返回布尔值 用于测试字符串参数中是否存正则表达式模式,如果存在则返回true,否则返回false

    2.     reg.exec(strObject) 

            返回数组或null.

            方法用于正则表达式模式在字符串中运行查找,如果 exec() 找到了匹配的文本,则返回一个结果数组。否则,返回 null。

    除了以上两种方法,有些字符串函数可以传入RegExp对象作为参数,进行一些复杂的操作

    预定义元字符

    预定义特殊字符

    字符 含义
    \t   水平制表符 (Matchs a Tab)
    \r   回车符   Matches a carriage return
    \n   换行符   Matches a carriage return
    \f   换页符    Matches a form feed
    \cX 与X对应的控制字符(Ctrl+X)
    \v   垂直制表符  Matches a vertical tab (U+000B).
    \0  空字符  Matches a NULL (U+0000) character

    可以使用元字符[]来构建一个简单的类(类:匹配其中的一项就可以),所谓类是指,符合某些特征的对象,是一个泛指,而不是特指某个字符了

    [abc]  // 匹配a或b或c

    元字符^创建反向类/负向类,反向类的意思是不属于XXX类的内容

    [^abc]  // 匹配a或b或c之外的字符

    范围类

    []组成的类内部是可以连写的,我们还可以这样写 [a-zA-Z]   // 匹配大写字母或小写字母中的某个字母

    预定义类

    正则表达式为我们提供了几个常用的预定义类(内置的类)来匹配常见的字符

    字符 等价类 含义
    .   [^\n\r]   除了回车符和换行符之外的所有字符
    \d [0-9] 数字字符
    \D [^0-9] 非数字字符
    \s [ \t\n\x0B\f\r] 空白符
    \S [^ \t\n\x0B\f\r] 非空白符
    \w [a-zA-Z_0-9] 单词字符(字母、数字、下划线)
    \W [^a-zA-Z_0-9] 非单词字符

    边界

    正则表达式还提供了几个常用的边界匹配字符

    字符 含义

    ^   以xx开头

    $    以xx结尾

    \b   单词边界,指[a-zA-Z_0-9]之外的字符

    \B   非单词边界

    量词

    字符 含义
    ?   出现零次或一次(最多出现一次)    Equivalent to {0,1}.
    +   出现一次或多次(至少出现一次)   Equivalent to {1,}.
    *    出现零次或多次(任意次)           Equivalent to {0,}.
    {n} 出现n次
    {n,m} 出现n到m次
    {n,} 至少出现n次

    贪婪模式与非贪婪模式

    量词在默认下是尽可能多的匹配的,也就是大家常说的贪婪模式

    非贪婪模式,在量词后加上 ?

    分组

    使用()就可以达到次目的,我们称为分组

    x|y  Matches either 'x' or 'y'.  匹配x或是y

    前瞻

    表达式 含义
    exp1(?=exp2) 匹配后面是exp2的exp1
    exp1(?!exp2) 匹配后面不是exp2的exp1

    (The End)
  • 相关阅读:
    py3学习笔记0(入坑)
    为什么很多PHP文件最后都没有?>
    作业
    凯撒密码、GDP格式化输出、99乘法表
    作业4
    作业3
    turtle库基础练习
    作业2
    作业1
    编译原理有限自动机的构造与识别
  • 原文地址:https://www.cnblogs.com/oneplace/p/5380620.html
Copyright © 2020-2023  润新知