supce's blog

RegExp类型

今天用到了JavaScript的RegExp,顺便把这部分内容复习了下,敲了敲demo
课题组要结题,断更了一段时间,以后会慢慢恢复正常

RegExp类型


RegExp 对象表示正则表达式,它是对字符串执行模式匹配的强大工具。有两种创建方式

  • 字面量
    var p = /pattern/attributes;
    比如:匹配第一个“bat”或“cat”,不区分大小写
    var pattern = /[bc]at/i;
  • RegExp构造函数
    var p = new RegExp(pattern,attributes);
    比如:匹配第一个“bat”或“cat”,不区分大小写
    var pattern = new RegExp("[bc]at","i");

注意双重转义

var pattern1 = /\[bc\]at/i;
var pattern2 = new RegExp("\\[bc\\]at","i");  //由于是字符串所以要进行双重转义

RegExp实例方法

RegExp对象的主要方法是exec和test

$("test").innerHTML += "</br>-------无全局标识--------</br>";
var text = "cat, bat, sat, fat";
var patter3 = /.at/;
var matches = patter3.exec(text);
$("test").innerHTML += "mathches.index:"+matches.index + " matches[0]:" + matches[0] + " lastIndex:" +patter3.lastIndex + "</br>";
var text = "cat, bat, sat, fat";
var patter3 = /.at/;
var matches = patter3.exec(text);
$("test").innerHTML += "mathches.index:"+matches.index + " matches[0]:" + matches[0] + " lastIndex:" +patter3.lastIndex;
$("test").innerHTML += "</br>------带全局标识---------</br>";
var patter4 = /.at/g;
var matches = patter4.exec(text);
$("test").innerHTML += "mathches.index:"+matches.index + " matches[0]:" + matches[0] + " lastIndex:" +patter3.lastIndex + "</br>";
var text = "cat, bat, sat, fat";
var patter3 = /.at/;
var matches = patter4.exec(text);
$("test").innerHTML += "mathches.index:"+matches.index + " matches[0]:" + matches[0] + " lastIndex:" +patter4.lastIndex;
$("test").innerHTML += "</br>------test方法---------</br>";
var text = "000-00-0000";
var patter4 = /\d{3}-\d{2}-\d{4}/;
if(patter4.test(text)){
    $("test").innerHTML +=  "The pattern was matched";
}else{
    $("test").innerHTML +=  "The pattern was not matched";
}

RegExp构造函数属性

RegExp构造函数包含一些属性,这些适用于作用域中的所有正则表达式,并且基于所执行的最近一次正则表达式操作而变化。

$("test").innerHTML += "</br>------RegExp构造函数属性---------</br>";
var text = "this has been a short summer";
var patter5 = /(.)hort/g;
if(patter5.test(text)){
    $("test").innerHTML += "input:" + RegExp.input +  "</br>leftContext:" + RegExp.leftContext + 
    "</br>rightContext:" + RegExp.rightContext + "</br>lastMatch:" + RegExp.lastMatch +
     "</br>lastParen:" + RegExp.lastParen + "</br>multiline:" + RegExp.multiline;  //不支持multiline
}   
$("test").innerHTML += "</br>------存储捕获组的构造函数属性---------</br>";
var patter6 = /(..)or(.)/g;
if(patter6.test(text)){
    $("test").innerHTML += "$1:" + RegExp.$1 + "</br>$2:" + RegExp.$2;
}