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 閱讀(232)
評論(0) 編輯 收藏 所屬分類:
ajax/jquery/js