最前端

我的工作,我的生活,点点滴滴...

归档: ‘ 2009 年八月

javascript里的正则表达式

正则表达式对象两种声明方式

var re = new RegExp("a","gi");
var re = /a/gi;

正则表达式对象可选标志

  1. g ,全文查找
  2. i ,忽略大小写
  3. m ,多行查找

正则表达式对象几种常用作用

  1. 测试字符串有效性
  2. 替换(删除)XX文本
  3. 提取XX文本

正则表达式对象方法

  1. test,返回一个 Boolean 值,它指出在被查找的字符串中是否存在模式。如果存在则返回 true,否则就返回 false。
    var re = /daichang/;
    var str = 'hello daichang';
    console.log(re.test(str)); // 返回true
  2. exec,用正则表达式模式在字符串中运行查找,并返回包含该查找结果的一个数组。
    var re = /(5)/g; // 使用了子匹配()
    var str = '10 20 25 50 100';
    var arr = re.exec(str);
    console.dir(arr);
    // 返回数据["5", "5"]
    // 0: "5"
    // 1: "5"
    // index: 7
    // input: "10 20 25 50 100"
    // length: 2
  3. compile,把正则表达式编译为内部格式,从而执行得更快。
    var re = new RegExp();
    re.compile('dai','gi');
    var str = 'daichang Daichang';
    var arr = str.match(re);
    console.log(arr); // 返回["dai","Dai"]

正则表达式对象的属性

  1. source,返回正则表达式模式的文本的副本。只读。
  2. lastIndex,返回字符位置,它是被查找字符串中下一次成功匹配的开始位置,默认值-1,可被exec,test方法修改。
    var re = /[A-Z]/g;
    var str = 'Chang-Dai';
    console.log(re.lastIndex); // 返回0
    arr = re.exec(str);
    console.log(re.lastIndex); // 返回1
    console.log(arr); // 返回["C"]
    arr = re.exec(str);
    console.log(re.lastIndex); // 返回7
    console.log(arr); // 返回["D"]
  3. $1…$9,返回九个在模式匹配期间找到的、最近保存的部分。只读。
    var re = /(\d+)\s(\d+)\s(\d+)\s(\d+)/;
    var str = '134 666 937 59';
    re.test(str);
    console.log(RegExp.$1+'-'+RegExp.$2+'-'+RegExp.$3+'-'+RegExp.$4); // 返回134-666-937-59
    // 在replace这类方法中,不用带RegExp前缀
    console.log(str.replace(re,"$4|$3|$1|$1")); // 返回59|937|134|134
  4. RegExp.input (RegExp.$_),返回执行规范表述查找的字符串。只读。
  5. RegExp.lastMatch (RegExp.[‘$&’]),返回任何正则表达式搜索过程中的最后匹配的字符。只读。
  6. RegExp.lastParen (RegExp.[‘$+’]),如果有的话,返回任何正则表达式查找过程中最后括的子匹配。只读。
  7. RegExp.leftContext (RegExp.[‘$`’]),返回被查找的字符串中从字符串开始位置到最后匹配之前的位置之间的字符。只读。
  8. RegExp.rightContext (RegExp.[‘$”]),返回被搜索的字符串中从最后一个匹配位置开始到字符串结尾之间的字符。只读。

String对象一些和正则表达式相关的方法

  1. match,找到一个或多个正则表达式的匹配。
    var re = /[A-Z]/g;
    var str = 'Chang-Dai';
    arr = str.match(re);
    console.log(arr); // 返回["C", "D"]
  2. replace,替换与正则表达式匹配的子串。
    var re = /[A-Z]/g;
    var str = 'Chang-Dai';
    srt = str.replace(re,'T');
    console.log(srt); // 返回Thang-Tai
  3. search,检索与正则表达式相匹配的值。
    var re = /[A-Z]/g; // 查的出现第一次时就会返回下标,其实设置g无意义
    var str = 'Chang-Dai';
    var index = str.search(re);
    console.log(index); // 返回0
  4. split,把字符串分割为字符串数组。
    var re = /[^a-z]/i; 
    var str = 'Dai|chang-Hello';
    var arr = str.split(re);
    console.log(arr); // 返回["Dai", "chang", "Hello"]