match
"12 34".match(/\d+/g)
//结果
["12", "34"]
search
"test12".search( /\d+/ )
//结果
4
split
'Hello \n world'.split( /\s+/ )
//结果
["Hello", "world"]
'12-34-56'.split('-', 2)
//结果
["12", "34"]
match
var str = '<span> <p>'
var re = /<(.*?)>/g
while( res = re.exec(str) ) {
console.log('match:' + res[0] + ' tag:' + res[1]);
console.log(re.lastIndex);
}
//结果
match:<span> tag:span VM998:7
6
match:<p> tag:p VM998:7
10
undefined
test
/^\d+$/.test('123')
//结果
true
replace
replace特殊引用
- $n n从1开始,指向匹配的第几个字符串
- $& 指向匹配的字符串
- $` 指向匹配字符串的左侧
- $’ 指向匹配字符串的右侧
示例:
"a1b".replace(/\d/,"左侧$` 匹配的文本$& 右侧$'");
//结果:
"a左侧a 匹配的文本1 右侧bb"
处理分组内容
"a1,2,3,4b".replace(/a\d,(\d),(\d),\db/,function(){
var args=arguments;
console.log(args);
var result=[];
for(var i=1;i<=args.length-3;i++){
result.push(args[i]);
}
return result.join(',');
});
//输出:
["a1,2,3,4b", "2", "3", 0, "a1,2,3,4b"]
"2,3"
首字母改成大写
var name = 'aaa bbb ccc';
var upperName=name.replace(/\b\w+\b/g, function(word){
return word.substring(0,1).toUpperCase()+word.substring(1);}
);
//结果
Abb Bbb Ccc
reduce实现的分组命名
function namedRegexMatch(text, regex, matchNames) {
var matches = regex.exec(text);
return matches.reduce(function (result, match, index) {
if (index > 0)
result[matchNames[index - 1]] = match;
return result;
}, {});
}
//使用示例
var myString = "Hello Alex, I am John";
var namedMatches = namedRegexMatch(
myString,
/Hello ([a-z]+), I am ([a-z]+)/i,
["firstPersonName", "secondPersonName"]
);
console.log(JSON.stringify(namedMatches));