<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB2312" />
<title>正则表达式</title>
<script language="JavaScript" type="text/javascript">
function regexp_str(){
var getStr=document.getElementsByTagName("input")[0].value;
var regexpStr;
var searchType=document.getElementsByTagName("input")[1].value;
if(searchType==1){ //是否大小写判断
regexpStr=/cat/i;
}
else{
regexpStr=/cat/;
}
var arr = getStr.search(regexpStr);
if(arr==-1){ //没有找到返回-1
alert("输入的字符串中没有出现cat");
}
else{ //找到返回第一次匹配的位置
alert("第一个匹配cat的字符串出现位置:"+arr);
}
}
function checkbox_value(){
var searchType=document.getElementsByTagName("input")[1].value;
if(searchType==1)
searchType=0;
else
searchType=1;
document.getElementsByTagName("input")[1].value=searchType;
}
</script>
</head>
<body>
<input type="text">
忽略大小写:<input type="checkbox" checked value="1" onchange="checkbox_value();">
<input type="button" value="查询" onclick="regexp_str();">
</body>
</html>
例子:
代码:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB2312" />
<title>正则表达式</title>
<script language="JavaScript" type="text/javascript">
function regexp_str(){//匹配正则表达式函数
var getStr=document.getElementsByTagName("input")[0].value;//取得输入
var regexpStr,arr;
var searchType=document.getElementsByTagName("input")[1].value;//是否全文搜索
if(searchType==1){//全文搜索
regexpStr=/cat/g;//g,全文搜索参数
while ((arr = regexpStr.exec(getStr)) != null){//当还没匹配完之前
alert(arr.index + "-" + arr.lastIndex + arr + "---"+arr.input);
//index是找到匹配的起始位置;lastIndex是找到匹配的末位置+1.比如这个例子:要匹配cat,而你输入的是1cat2cat3,则第一次匹配index为1,lastIndex为4.第二次匹配index为5,lastIndex为8.从这里也可以看出,lastIndex是配置了全文搜索后下一个搜索的开始位置.
//arr是输出整个数组,由于只有一个长度,输出的就是匹配的字符串
//input属性是在这里是输入的字符串,广义来说,就是被搜索的全文,比如上面举例的1cat2cat3
}
}
else{ //一次匹配
regexpStr=/cat/;
arr = regexpStr.exec(getStr);
alert(arr.index + "-" + arr.lastIndex + arr + "---"+arr.input); //由于只是一次匹配,就不要像上面那样用循环了(不然出现匹配情况,每次始终从头开始搜索,不能达到null,陷入死循环)
}
}
function checkbox_value(){//改变checkbox的值
var searchType=document.getElementsByTagName("input")[1].value; //取得当前checkbox值
if(searchType==1) //checkbox值为1改为0,否则改为1
searchType=0;
else
searchType=1;
document.getElementsByTagName("input")[1].value=searchType;
}
</script>
</head>
<body>
<input type="text">
全文搜索:<input type="checkbox" checked value="1" onchange="checkbox_value();">
<input type="button" value="查询" onclick="regexp_str();">
</body>
</html>