javascript 的perl类型的正则表达式
2010-04-16 09:06
295 查看
(1)var recat = new RegExp("cat"); //简单定义。
var recat = new RegExp("cat","gi");//g->global,i->case insensitive.
var recat = /cat/gi; //perl模式
(2)var sToMatch = "cat";
var reCat = /cat/;
alert(reCat.test(sToMatch)); //true
var sToMatch = "a bat, a cat, a Fat Cat, a faT caT";
var reAt = /at/;
var arrMatches = reAt.exec(sToMatch); //只返回第一个at出现的实例,bat. 注意这里使用exec时,参数是原字符串
var sToMatch = "a bat, a cat, a Fat Cat, a faT caT";
var reAt = /at/gi;
var arrMatches = sToMatch.match(reAt); //这里使用match时候,参数是正则表达式
var sToMatch = "a bat, a cat, a Fat Cat, a faT caT";
var reAt = /at/gi;
alert(sToMatch.search(reAt)); //这里和indexOf()有些相似 ,输出3
(3)var sToChange = "The sky is blue. ";
alert(sToChange.replace("blue","gray")); //output "The sky is gray. "
var sToChange = "The sky is blue. ";
var reRed = /red/;
var sResultText = sToChange.replace(reRed,function(sMatch){ //这里replace()的第二个参数是一个匿名函数,该
return "blue"; //匿名函数接受的参数sMatch表示匹配上的字符串。
});
alert(sResultText);
(4)var sColor = "red,blue,green,black";
var arrColors = sColor.split(",");
var reComma = //,/;
var arrColors = sColor.split(reComma);
(5)元字符:
( { [ / ^ $ | ) ? * + . ,
var reQMark = //?/;
var reQMark = new RegExp("//?");
特殊字符:
var sColor = "blue";
var reB = //x62/; //ASCII码
alert(reB.test(sColor));
var sColor = "blue";
var reB = //u0062/; // unicode 的4位十六进制
alert(reB.test(sColor)); //true,
其他的很多特性与perl的非常相似。
比如:量词 ? * + {n} {n,m} {n,}
贪婪 * + ? .*?与perl相同
分组
反向引用
(1) (A?(B?(C?)))
(2) (B?(C?))
(3) (C?)
候选
var color = "red";
var reRed = /(red|black)/;
alert(reRed.test(color));
var replaceBadWords = /badword|anotherbadword/gi;
var userInput = "This is a string using badword1 and badword2";
var finalText = userInput.replace(replaceBadWords,"****");
非捕获性分组
?:
无法使用$1来进行捕获
var reg = /(?:/d+)/; //这里的$1为空
前瞻(lookahead)
var sToMatch1 = "bedroom";
var sToMatch2 = "bedding";
var reBed = /(bed(?=room))/;
alert(reBed.test(sToMatch1)); //true
alert(RegExp.$1); //bed
alert(reBed.test(sToMatch2)); //false
边界(^ $ /b /B),多行(m)
实例属性(RegExp)
global,ignoreCase,lastIndex,multiline,source(正则表达式的源字符串形式)
静态属性
$_(最后用于匹配的字符串,传递给exec(),test()的字符串), (input)
$&(最后匹配的字符) (lastMatch)
$+(最后匹配的分组) (lastParen)
$`(上次匹配的前面的子串) (leftContext)
$*(指定所有的表达式使用多行模式的布尔值) (multiline)
$' (上次匹配之后的子串) [b](rightContext)[/b]
var sToMatch = "this has been a short, short summer";
var reShort = /(s)hort/g;
reShort.test(sToMatch);
alert(RegExp.input); //"this has been a short, short summer"
alert(RegExp.leftContext); //"this has been a "
alert(RegExp.rightContext); //", short summer"
alert(RegExp.lastMatch); //"short"
alert(RegExp.lastParen); //"s"
alert(RegExp.$_);
alert(RegExp.["$`"]);
alert(RegExp.["$&"]);...
电子邮件的验证:
/^(?:/w+/.?)*/w+@(?:/w+/.?)*/w+$/;
var recat = new RegExp("cat","gi");//g->global,i->case insensitive.
var recat = /cat/gi; //perl模式
(2)var sToMatch = "cat";
var reCat = /cat/;
alert(reCat.test(sToMatch)); //true
var sToMatch = "a bat, a cat, a Fat Cat, a faT caT";
var reAt = /at/;
var arrMatches = reAt.exec(sToMatch); //只返回第一个at出现的实例,bat. 注意这里使用exec时,参数是原字符串
var sToMatch = "a bat, a cat, a Fat Cat, a faT caT";
var reAt = /at/gi;
var arrMatches = sToMatch.match(reAt); //这里使用match时候,参数是正则表达式
var sToMatch = "a bat, a cat, a Fat Cat, a faT caT";
var reAt = /at/gi;
alert(sToMatch.search(reAt)); //这里和indexOf()有些相似 ,输出3
(3)var sToChange = "The sky is blue. ";
alert(sToChange.replace("blue","gray")); //output "The sky is gray. "
var sToChange = "The sky is blue. ";
var reRed = /red/;
var sResultText = sToChange.replace(reRed,function(sMatch){ //这里replace()的第二个参数是一个匿名函数,该
return "blue"; //匿名函数接受的参数sMatch表示匹配上的字符串。
});
alert(sResultText);
(4)var sColor = "red,blue,green,black";
var arrColors = sColor.split(",");
var reComma = //,/;
var arrColors = sColor.split(reComma);
(5)元字符:
( { [ / ^ $ | ) ? * + . ,
var reQMark = //?/;
var reQMark = new RegExp("//?");
特殊字符:
var sColor = "blue";
var reB = //x62/; //ASCII码
alert(reB.test(sColor));
var sColor = "blue";
var reB = //u0062/; // unicode 的4位十六进制
alert(reB.test(sColor)); //true,
其他的很多特性与perl的非常相似。
比如:量词 ? * + {n} {n,m} {n,}
贪婪 * + ? .*?与perl相同
分组
String.prototype.trim = function(){ var reExtraSpace = /^/s(.*?)/s+$/; return this.replace(reExtraSpace,$1); };
反向引用
(1) (A?(B?(C?)))
(2) (B?(C?))
(3) (C?)
候选
var color = "red";
var reRed = /(red|black)/;
alert(reRed.test(color));
var replaceBadWords = /badword|anotherbadword/gi;
var userInput = "This is a string using badword1 and badword2";
var finalText = userInput.replace(replaceBadWords,"****");
非捕获性分组
?:
无法使用$1来进行捕获
var reg = /(?:/d+)/; //这里的$1为空
前瞻(lookahead)
var sToMatch1 = "bedroom";
var sToMatch2 = "bedding";
var reBed = /(bed(?=room))/;
alert(reBed.test(sToMatch1)); //true
alert(RegExp.$1); //bed
alert(reBed.test(sToMatch2)); //false
边界(^ $ /b /B),多行(m)
实例属性(RegExp)
global,ignoreCase,lastIndex,multiline,source(正则表达式的源字符串形式)
静态属性
$_(最后用于匹配的字符串,传递给exec(),test()的字符串), (input)
$&(最后匹配的字符) (lastMatch)
$+(最后匹配的分组) (lastParen)
$`(上次匹配的前面的子串) (leftContext)
$*(指定所有的表达式使用多行模式的布尔值) (multiline)
$' (上次匹配之后的子串) [b](rightContext)[/b]
var sToMatch = "this has been a short, short summer";
var reShort = /(s)hort/g;
reShort.test(sToMatch);
alert(RegExp.input); //"this has been a short, short summer"
alert(RegExp.leftContext); //"this has been a "
alert(RegExp.rightContext); //", short summer"
alert(RegExp.lastMatch); //"short"
alert(RegExp.lastParen); //"s"
alert(RegExp.$_);
alert(RegExp.["$`"]);
alert(RegExp.["$&"]);...
电子邮件的验证:
/^(?:/w+/.?)*/w+@(?:/w+/.?)*/w+$/;
相关文章推荐
- Javascript一(变量,数据类型,正则表达式,数据,语句)
- 使用perl的正则表达式对文件中的特定类型超链接里面的换行去掉,使其在一行
- javascript之数字类型正则表达式
- JavaScript类型系统之正则表达式
- JavaScript正则表达式----RegExp类型, 代码说明简单易懂
- JavaScript学习笔记(2) -基本封装类型和正则表达式
- javascript类型系统_正则表达式RegExp类型详解
- 正则表达式检查IP类型和EMAIL字符串的格式(Javascript实现)
- javaScript(正则表达式)通用数据类型校验
- 一个帮助你了解javascript正则表达式的工具类型网站
- javascript类型系统_正则表达式RegExp类型详解
- javascript正则表达式小数类型
- 正则表达式使用详解 (php,perl,unix,javascript)
- ES引用类型 之 Regexp正则表达式(摘至javaScript 高程3)
- JavaScript的Date与正则表达式引用类型
- 正则表达式使用详解 (php,perl,unix,javascript) (有点意思)
- 发散思维--javascript、C语言、perl正则表达式处理同一目录搜索问题
- 使用perl的正则表达式对文件中的特定类型超链接里面的换行去掉,使其在一行
- JavaScript类型系统之正则表达式
- JavaScript 1.10 RegExp类型—正则表达式的使用方法(部分转载)