JavaScript中的正则表达式操作

总是搞混RegExp对象的方法和字符串正则方法,整理备忘一下,抄自JavaScript权威指南
var reg = new RegExp("[a-zA-Z]+", "gi");// 或者
var rex = /[a-zA-Z]+/gim;


[b][size=medium]RegExp对象方法[/size][/b]
1. exec(string)
返回:返回单个匹配,和详细信息
var pattern = /Java/g;
var text = "JavaScript is mor fun than Java!";
var result = pattern.exec(text);
while(result != null){
console.log("match "+result[0]+" start at "+result.index+", end at "+pattern.lastIndex);
result = pattern.exec(text);
}


2. test(string)
返回:如果字符串中含有匹配正则表达式的字符串,那么返回true,如果不包含,那么返回false
var reg = /java/i;
console.log(reg.test("welcome to JavaScript"));
// 加上^和$限定就可以用来判定整个字符串是否符合正则表达式
console.log(/^\s*$/.test(""));
console.log(/^\s*$/.test(" 1"));
console.log(/^\s*$/.test("1 "));
console.log(/^\s*$/.test(" 1 "));
console.log(/^\s*$/.test("1 1"));


[b]
[size=medium]字符串对象方法[/size][/b]
1. search(regexp)
返回:第一个匹配的位置,或者-1
举例:
"JavaScript".search(/script/i); // return 4

search不支持“g”标记,会直接忽略

2. replace(regexp, "replacement");
返回: 替换后的字符串
举例:
"Javascript is javascript".replace(/javascript/gi, "JavaScript");


如果没有设置"g"标记,那么只替换第一个匹配的字符串,如果设置了"g"标记,那么会替换所有匹配到的字符串
"Javascript is not javascript".replace(/javascript/i, "JavaScript"); // "JavaScript is not javascript"


可以使用反向引用已匹配到的字符串,如
"var a=1234;".replace(/([a-z]+)=(\d+)/gi, "$1 = $2");// 轻松补上空格


3. match(regexp)
返回:正则表达式匹配的字符串列表
"1 + 2 = 3".match(/\d+/g);// ["1", "2", "3"]

如果设置了g标记,那么返回字符串中所有的匹配
如果没有设置g标记,那么只查找第一个匹配,但是返回结果依然是一个列表,list[0]包含匹配的整个字符串, list[1]...list[n]包含第n个分组
var url = /(\w+):\/\/([\w.]+)\/(\S*)/;
var text = "visit http://www.google.com/codeSearch";
var list = text.match(url);
if(list != null){
console.log(list[0]);
console.log(list[1]);
console.log(list[2]);
console.log(list[3]);
}

4. split(regexp) <-- 还支持参数为字符串
返回:根据正则表达式分割后的字符串列表
举例:
"123,456,789".split(","); // ["123", "456", "789"]
"123 , 456 , 789".split(/\s*,\s*/); // ["123", "456", "789"]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值