1111-1234 re \d{5}(-\d{4})?
?指前面的子项可有可无
11111 re (\d)\1{4}
1221 re (\d)(\d)\2\1
RegExp对象
创建方式:
1 使用RegExp对象显式构造函数new RegExp("pattern"[,"flags"])
2 使用RegExp对象隐式构造函数/pattern/[flags]
flags参数
g 用作全局标志
i 用作无视大小写
m 用作多行标志
如果没有设置这个标志,那么“^”只与整个字符串的开始位置相配,“$”只与整个字符串的
结束位置相配,如果设置了这个标志,那么“^”还可以与字符串的“\n”和"\r"之后的位置相配
(即下一行的行首),面“$”还可以与字符串的“\n”和"\r"之前的位置相配(即一行的行首)
注意:javascript中的\是转义字符,所以应将原始正则表达式模式文本中的\都用
两个\\替换,如果要表示原意为"\"就要用"\\\\"表示
例:
var re=new RegExp("\\d{5}");显式
vaf re=/\d{5}/;隐式
RegExp对象的属性
共享的静态属性
index只读属性 当前使用的正则表达式的模式在被查找字符串中的第一个相配的字符串的开始位置,从0开始,默认为-1
lastindex只读属性 当前使用的正则表达式的模式在被查找字符串中的第一个相配的字符串的结束位置的下一个位置,从0开始,默认为-1
input属性 当前使用的正则表达式的模式所作用的字符串
lastMatch属性 当前使用的正则表达式的模式在被查找字符串中的最后一个字符串
lastParen属性
leftContext属性 当前使用的正则表达式的模式在被查找字符串中的最后一个字符串左边的位置
rightContext属性 当前使用的正则表达式的模式在被查找字符串中的最后一个字符串右边的位置
单个对名象实例的属性
global属性 返回创建对象实例时全局标志的状态,如果设了为treu,反为false
ignreCase属性 返回创建对象实例时指定的无视大小写状态,如果设了为treu,反为false
multiline属性 返回创建对象实例时指定的多行标志状态,如果设了为treu,反为false
source属性 返回创建对象实例时所指定的正则表达式文本
compile("pattern[,"flags"]")方法 更换创建RegExp对实例时所指定的正则表达式的模式
exec(str)方法 使用创建RegExp对实例时所指定的正则表达式的模式对一个字符串执行查找,并返回一个包含结果的数组,没有返回null
返回的数组有input,index和lastIndex三个属性
test(string)方法 检查一个字符串是否存在创建RegExp对实例时所指定的正则表达式的模式
说明:如果正则表达式设置了全局标志(g),可以多次调用exec和test方法,每次查找从lastIndex属性值指定的位置开始查找
例子:
<script type="text/javascript">
//例子:
var strSrc="xxa1b01c001yya2b02c002zz";
var re=/a(\d)b(\d{2})c(\d{3})/gi;
var arr,count=0;
while((arr=re.exec(strSrc))!=null)
{
displayResult();
}
function displayResult()
{
document.write("<p>这是用正表达式/"+re.source+"/gi对字符串<br></p>"+
RegExp.input+"进行第"+(++count)+"次查找的结果:<br>");
document.write("RegExp.index为"+RegExp.index+"<br>");
document.write("RegExp.lastIndex为"+RegExp.lastIndex+"<br>");
document.write("RegExp.lastMatch为"+RegExp.lastMatch+"<br>");
document.write("RegExp.lastParen为"+RegExp.lastParen+"<br>");
document.write("RegExp.leftContext为"+RegExp.leftContext+"<br>");
document.write("RegExp.rightContext为"+RegExp.rightContext+"<br>");
document.write("RegExp.$1为"+RegExp.$1+"<br>");
document.write("RegExp.$2为"+RegExp.$2+"<br>");
document.write("RegExp.$3为"+RegExp.$3+"<br>");
document.write("RegExp.$4为"+RegExp.$4+"<br>");
document.write("arr.inedex为"+arr.index+"<br>");
document.write("arr.input为"+arr.input+"<br>");
document.write("arr.lastIndex为"+arr.lastIndex+"<br>");
document.write("返回数组元素的个数为"+arr.length+"<br>");
document.write("返回数组元素的内容为[");
for(var i=0;i<arr.length;i++)
{
if(i<arr.length-1)
{
document.write("\""+arr[i]+"\",");
}else
{
document.write("\""+arr[i]+"\"]</p>");
}
}
}
/////////--------------- String 对象----------------------------
//match(rgExp)方法 使用正则表达式模式对字符串进行查找,并返回一个包含结果的数组
var strSrc="xxa1b01c001yya2b02c002zz";
var re=/a(\d)b(\d{2})c(\d{3})/gi;
var arr;
arr=strSrc.match(re);
for(var i=0;i<arr.length;i++)
{
if(i<arr.length-1)
document.write("[\""+arr[i]+"\",")
else
document.write("\""+arr[i]+"\"]")
}
//search(rgExp)方法 第一个字符串
//replace(rgExp,replaceText)方法
var strSrc="a12b34c56";
var re=/(\d)(\d)/gi;
var strDest=strSrc.replace(re,"$2$1");
alert(strSrc+"="+strDest);
//split(separator[,limit])方法
//正则表达式的语法
//限定符:
//{n}
//{n,}前面的指定字符只少出现n次
//{n,m}前面的指定字符只少出现n次,最多出现m次
//+一次或多次,等效于{1,}
//*零次或多次,等效于{0,}
//?零次或一次
//贪婪匹配
//默认情况下,正则表达式使用最长匹配原则
//非贪婪匹配
//当字符"?"紧跟任何其他限定符(*、+、?、{n}、{n,m}、{n,})之后,匹配变成最短匹配原则 "fo+?"
//选择匹配符"|"
//两边字符最大原则
//分组组合和反同引用符"()"和"\num"
//(?:pattern)
//un \u00A9匹配@
//\f换页 等效于\x0c和\cL
//\n换行 等效于
//\r回车 等效于
//\t制表 等效于
//\v垂直制表符 等效于
//字符匹配符
//[]任何一个
//[^]取反任何一个
//[a-z]取范围内的一个
//[^a-z]不在范围内的字符
//\d \D是\d的取反
//\s空格 等效于[\f\n\r\t\v] \S非空格
//\w单词 等效于[A-Za-z0-9_] \W
//. 换行符以外的任意字符
//定位符
//^开始位置
//$结尾位置
//\b 单词的边界(开始或结尾边界)
//\B 非单词的边界
//原议字符
//即需要\:
//正则表达式从左到右进行计算,并按优先级顺序。
/**//*
空行 re /^\s*$/
HTML标记 re /<(\S+)(\s[^>]*?)>[\s\S]*<\/\1\s*>/
Email re /[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/
两个相同的相邻单词 re /\b([a-z]+)\1\b/
ip地址 /^\d{1,2}|1\d\d|2[0-4]\d|25[0-5(\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])){3}$/
*/
//例子
/**//*
*/
</script>
posted on 2009-11-04 14:42
junly 阅读(224)
评论(0) 编辑 收藏 所属分类:
ajax/jquery/js