1. Match函數(shù) 使用指定的正則表達式函數(shù)對字符串驚醒查找,并以數(shù)組形式返回符合要求的字符串 原型:stringObj.match(regExp) 參數(shù): stringObj 必選項,需要去進行匹配的字符串 RegExp 必選項,指定的正則表達式 返回值:如果沒有使用g(全局匹配)選項,則返回第一個匹配的字符串、該字符串所在位置及原始字符串組成的數(shù)組,如果使用g選項,則返回所有匹配的字符串組成的數(shù)組
// 示例1:
var str =
“aaabbbcccaaabbbccc”;
var res = str.match(/aaa/);
// 沒有使用g選項
console.log(res);
// 輸出[ 'aaa', index: 0, input: 'aaabbbcccaaabbbccc' ] 第一個表示匹配的字符串;第二個表示匹配的字符串坐在的索引位置,從0開始計算;第三個表示原始字符串;
// 示例2:
var str =
“aaabbbcccaaabbbccc”;
var res = str.match(/aaa/g);
// 使用g選項,全局匹配
console.log(res);
// 輸出[ 'aaa', 'aaa' ] 所有匹配的字符串組成的數(shù)組 ?
2.exec函數(shù) 使用指定的正則表達式模式去字符串中查找匹配項,并以數(shù)組形式返回,如果未查找到則返回null 原型:regExp.exec(stringObj) 參數(shù): regExp 必選項,表示指定的正則表達式模式 stringObj 必選項,表示需要查找的字符串 返回值:無論有無g選項,都返回第一個匹配的字符串、該字符串所在位置及原始字符串組成的數(shù)組,但是該方法可以返回子匹配項,是match所不能及的
// 示例1:
var str =
“aaabbbcccaaabbbccc”;
var regExp = /aaa/;
// 未使用g選項
var res =
regExp .exec(str);
console.log(res); // 輸出[ 'aaa', index: 0, input: 'aaabbbcccaaabbbccc' ]
// 示例2:
var str =
“aaabbbcccaaabbbccc”;
var regExp = /aaa/g;
// 使用g選項
var res =
regExp .exec(str);
console.log(res); // 輸出[ 'aaa', index: 0, input: 'aaabbbcccaaabbbccc' ]
// 示例3:
var str =
“aaabbbccc1234aaabbbccc”;
var regExp = /ccc([0-9]+)aaa/
;
var res =
regExp .exec(str);
console.log(res); // 輸出[ 'ccc1234aaa', '1234', index: 6, input: 'aaabbbccc1234aaabbbccc' ] 第一個表示整個正則表達式所匹配的內(nèi)容;第二個表示()內(nèi)容的子表達式所匹配的內(nèi)容;第三個和第四個同上
// 示例4:
var str =
“aaabbbccc1234aaabbbcccaaabbbccc5678aaabbbccc”;
var reg = /ccc([0-9]+)aaa/
;
var res =
reg.exec(str);
console.log(res); // 輸出同示例三,因為exec只返回第一個匹配的字符串,如果想全部返回,則需要借助while循環(huán)和g參數(shù)來實現(xiàn),如下
var str =
“aaabbbccc1234aaabbbcccaaabbbccc5678aaabbbccc”;
var reg = /ccc([0-9]+)aaa/
g;
while (res =
reg.exec(str)){
console.log(res);
}
// 輸出如下:
[ 'ccc1234aaa', '1234', index: 6, input: 'aaabbbccc1234aaabbbcccaaabbbccc5678aaabbbccc' ][ 'ccc5678aaa', '5678', index: 28, input: 'aaabbbccc1234aaabbbcccaaabbbccc5678aaabbbccc'
]
// 使用這個方法時切記加上g選項,否則while循環(huán)將無法跳出,每次都循環(huán)第一個匹配項,導(dǎo)致死循環(huán),可能卡死! ?
3.test函數(shù) 原型:regExp.test(str) 參數(shù):regExp表示正則表達式模式 stringObj表示需要進行匹配的字符串 返回值:布爾類型,匹配則返回true,否則false
// 示例1:
var str =
“aaabbbcccaaabbbccc”;
var reg = /[a-z]+/
;
var res =
reg.test(str);
console.log(res); // 輸出true
// 示例2:
var str =
“aaabbbcccaaabbbccc”;
var reg = /[0-9]+/
;
var res =
reg.test(str);
console.log(res); // 輸出false
// 該函數(shù)一般用來檢測某字符串是否符合指定的規(guī)則 ?
4.search函數(shù) 原型:stringObj.search(regExp) 參數(shù):regExp表示正則表達式模式 stringObj表示需要進行匹配的字符串 返回值:返回第一個匹配的字符串所在的位置(偏移量),從0開始
// 示例1:
var str =
“aaabbbcccaaabbbccc”;
var reg = /ccc/
;
var res =
str.search(reg);
console.log(res); // 輸出 6 5.replace函數(shù)
原型:stringObj.replace(regExp, replaceText) 參數(shù):regExp表示正則表達式模式,stringObj表示需要進行匹配的字符串,replaceText表示替換成該文本內(nèi)容,replaceText也可以是返回字符串的一個函數(shù) 返回值:返回替換之后的字符串
// 示例1:
var str =
“aaabbbcccaaabbbccc”;
var reg = /aaa/
;
var res = str.replace(reg, ’111
′);
console.log(res); // 返回111bbbcccaaabbbccc ,只替換第一個匹配項,若需要替換所有則需要使用g選項 6.split函數(shù)
原型:stringObj.split([separator[, limit]]) 參數(shù):separator表示分隔符(此處也可以是正則表達式),stringObj表示需要進行匹配的字符串,limit用來限制返回數(shù)組元素的個數(shù) 返回值:返回分割后的數(shù)組
// 示例1:
var str =
“aaa,bbb,ccc”;
var reg = /,/
;
var res =
str.split(reg);
console.log(res); // 輸出[ 'aaa', 'bbb', 'ccc' ]
// 其實這里可以簡單的寫為var res = str.split(“,”);
// 示例2:
var str =
“aaa,bbb:ccc@ddd#eee”;
var reg = /[,:@#]/
;
var res =
str.split(reg);
console.log(res); // 輸出[ 'aaa', 'bbb', 'ccc', 'ddd', 'eee' ] 這才是用正則的強大之處
// 示例3.
var str =
“aaa,bbb:ccc@ddd#eee”;
var reg = /[,:@#]/
;
var res = str.split(reg, 3
);
console.log(res); // 輸出[ 'aaa', 'bbb', 'ccc']
轉(zhuǎn)載于:https://www.cnblogs.com/simadi/p/7091045.html
總結(jié)
以上是生活随笔 為你收集整理的Nodejs正则表达式函数之match、test、exec、search、split、replace使用详解 的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔 推薦給好友。