例如正則表達式爲/John|Jack/,匹配字符串爲"Jack is at home,where is John",可以成功匹配到字串"Jack",再次匹配時也可成功匹配到"John"。候選,即用"|"來表示模式的或關係。語法爲expression | expression,符號"|"左右兩邊表示式是 "或"的關係,在模式匹配時可匹配左邊或者右邊。
例如正則表達式爲/John|Jack/,匹配字符串爲"Jack is at home,where is John",可以成功匹配到字串"Jack",再次匹配時也可成功匹配到"John"。
實例:
<script type="text/javascript">
<!--
var str = "Jack is at home,where is John";
var reg = /John|Jack/g;
var arr = reg.exec(str);
if(arr){
document.write(arr+"匹配成功<br>");
}else{
document.write(arr+"匹配失敗<br>");
}
arr = reg.exec(str);
if(arr){
document.write(arr+"匹配成功");
}else{
document.write(arr+"匹配失敗");
}
-->
</script>
輸出:
Jack匹配成功
John匹配成功
---------------------------------------------------------------------------------------------------------------
至此,分析電話號碼的正則表達式如下所示:
/^(((\d{3})|(\d{3}-))(\d{8}))$|^(((\d{4})|(\d{4}-))(\d{7}))$/
電話號碼是 3位區號加8位號碼,或者4位區號加7位號碼,這就是一個"或"的關係。所以,整個表達式總體爲/^()$|^()$/,再考慮左右兩邊括號的內容。
三位區號可以用\d{3}表示,8位號碼可以用\d{8}來表示,可能中間還有"-"隔開,所以添加了一個\d{3}-的選擇,所以左邊爲^((\d{3})|(\d{3}-))(\d{8})$。那右邊4位區號加7位號碼就可以葫蘆畫瓢爲^((\d{4})|(\d{4}-))(\d{7})$,最終得到整個正則表達式進行模式匹配。
實例:
<script type="text/javascript">
<!--
function testSplit(){
var myStr = "數學95;語文85;英語89;生物71";
var regex = /;/;
var splitArr = myStr.split(regex);
var msg = "";
for(var i = 0; i < splitArr.length; i++){
msg += splitArr[i]+"\n";
}
alert(msg);
}
testSplit();
//-->
</script>