JavaScript 正则表达式学习笔记

来源:互联网 发布:淘宝店铺监管解封 编辑:程序博客网 时间:2024/04/30 03:04

RegExp对象用于规定在文本中检索的内容
RegExp对象用于存储检索模式
    var patt1 = new RegExp("e"); //定义一个
RegExp有三个方法:test() exec() compile()
    test()方法检索字符串中的指定值,返回值为true or false
        eg: alert((new RegExp("d")).test("abcd")); //return true
    exec()方法检索字符串中的指定值。返回被找到的值,如果没有匹配,返回null
        eg:alert((new RegExp("d")).exec("abcd")); //return d
    compile()方法用于改变RegExp,它既可以改变检索模式,也可以添加或删除第二个参数

可以向RegExp对象添加第二个参数,以设定检索,如果需要找到某个字符的所有存在,则可以使用"g"(global)参数
    eg:var patt1 = new RegExp("e","g");
    do{
        result = patt1.exec("The best things in life are free");
        document.write(result);
    }
    while(result!=null)
    g参数的工作原理是:找到第一个"e",并存储其位置,如果再次运行exec(),
    则从存储的位置开始检索,并找到下一个"e",并存储其位置
=======================
创建RegExp对象的两种方法:
    直接量语法:/pattern/attributes;
    创建RegExp对象的语法:new RegExp(pattern,attributes);
   
    参数pattern是一个字符串,指定了正则表达式的模式或其他正则表达式。
    参数attributes是一个可选的字符串,包含属性"g","i","m",分别用于全局匹配,区分大小写匹配和多行匹配,
    如果pattern是正则表达式而不是字符串,则必须省略该参数。

修饰符
i:执行对大小写不敏感的匹配
g:执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)
m:执行多行匹配
方括号
[abc]:查找方括号之间的任何字符
[^abc]:查找任何不再方括号之间的字符
[0-9]:查找任何从0到9的数字
[a-z]:查找任何从a到z的字符
[A-Z]:查找任何从大写A到Z的字符
元字符
.:查找单个字符,除了换行和行结束符
/w:查找单词字符 单词字符包括a-z,A-Z,0-9,_
/W:查找非单词字符
/d:查找数字
/D:查找非数字字符
/s:匹配空白字符 eg:空格 制表符 回车符 换行符 垂直换行符 换页符
/S:查找所有非空白字符
/b:匹配单词的开头或者结尾
/B:查找不再开头的单词的匹配
/0:查找NUL字符
/n:查找换行符
/f:查找换页符
/r:查找回车符
/v:查找垂直制表符
/xxx:查找以八进制数xxx规定的字符
/xdd:
/uxxxx:
量词
n+:匹配任何包含至少一个n的字符串
n*:匹配任何包含0个或多个的字符串
n?:匹配任何包含0个或一个n的字符串
n{x}:匹配包含x个n的序列的字符串
n{x,y}:匹配包含x或y个n的序列的字符串
n{x,}:匹配包含至少x个n的序列的字符串
n$:匹配任何结尾为n的字符串
^n:匹配任何开头为n的字符串
?=n:匹配任何其后紧接指定字符串n的字符串
?!n:匹配任何其后没有紧接指定字符串n的字符串
RegExp对象属性
    global属性:如果g标志被设置,返回true,否则返回false
    ignoreCase属性:如果i标志被设置,则该属性返回true,否则返回false
    lastIndex属性:该属性存放一个整数,它声明的是上一次匹配文本之后的第一个字符的位置,上次匹配的结构是由方法RegExp.exec()和RegExp.test()找到的,当这两个方法找不到可以匹配的文本时,它们会自动把lastIndex属性重置为0,这个属性是可读可写的。
    multiline属性:如果m标志被设置,返回true,否则返回false
    source:返回正则表达式的源文本
支持正则表达式的String方法