1.)String方法
a.)String.search()
參數:可以是Regex也可以是普通的字串。
傳回值:如果找到匹配則返回首字元的索引位置,找不到則返回-1
var s = "Hello world.";
reg = /world/i; // i表示不區分大小寫
alert(s.search(reg));
b.)String.replace()
參數:1.Regex 2.用於替換的字串
返回替換後的字串
var s = "Hello world.World!";
reg = /world/gi; // g為全域模式,會替換所有匹配
alert(s.replace(reg,'a'));
子運算式(可以通過$n訪問括弧裡匹配的子運算式):
var s = "11 22 33 44 55 66 77!";
reg = /(\S+)(\s+)(\S+)/g; // i表示不區分大小寫
alert(s.replace(reg,'$3$2$1')); //22 11 44 33 66 44 77!
c.)String.match()
把匹配的字串放到數組裡面返回。沒有匹配則返回null
//全域模式下,每個匹配放到返回數組裡
var s = "我的電話號碼0631-1234567 你的是021-87654321,我們常聯絡啊!";
reg = /(0\d\d-\d{8}|0\d\d\d-\d{7})/g; // 注意這個正則可能不完整還可能有更簡單的寫法
alert(s.match(reg)); //0631-1234567,021-87654321
//沒有設定g標記時,返回的數組[0]是整體匹配,1-n表示子匹配
var s = "我的工資是$800,她的工資是$400!";
reg = /(\$)(\d+)/; // $需要\轉義
alert(s.match(reg)); //$800,$,800
d.)String.split([分隔字元[,返回元素個數限制])
//普通的分割
var s = "我的工資是$800,她的工資是$400!";
alert(s.split(',')[0]); //我的工資是$800
//使用正則
var s = "中國人口達到14億,人均收入卻不到3000美元,所以中國還處於發展中國家!";
alert(s.split(/\d/)); //中國人口達到,億,人均收入卻不到,美元,所以中國還處於發展中國家!
2.)RegExp對象
a.)RegExp.test(str)
綣鸏tr匹配此正則對象則返回true.
var s = "這句話包含數字123用於測試!";
var re=/\d+/;
if(re.test(s))
alert("包含數字");
b.)RegExp.exec()比String.match()更強大
//非全域調用exec,[0]返回匹配,1-n返回子匹配
var s = "數字123,字母abc,底線_!";
var re=/(\w)\w*/;
alert(re.exec(s));//123,1
alert(re.exec(s).input);//數字123,字母abc,底線_!
alert(re.exec(s).index);//2
//帶全域標記
var s = "數字123,字母abc,底線_!";
var re=/(\w)\w*/g;
alert(re.lastIndex);//0
alert(re.exec(s));//123,1
alert(re.lastIndex);//5
alert(re.exec(s));//abc,a
alert(re.lastIndex);//11
alert(re.exec(s));//_,_
alert(re.lastIndex);//16
c.)Regex建構函式
re = new RegExp("pattern",["flags"])
var s = "數字123,字母abc,底線_!";
var re=new RegExp("(\\w)\\w*","g");//由於\在引號內也是轉義符,所以需要多加一個\
alert(re.exec(s));//123,1
摘自 九天銀河