您的位置:首页 > 其它

正则表达式那些事儿(二)

2014-04-18 09:28 197 查看
话接上回,我们写了第一个过滤字母的简单程序,和大家一起了解了正则表达式的基础知识。这回,我们以一个实例开始这篇稿子。

代码二:查找字符串中的数字

<!doctype html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<script>
window.onload = function() {
filterNums();
}

function filterNums() {
var str = 'abcefd 123 a456 a789';
var reg = /\d/;
document.writeln(str.match(reg)+'<br>');
document.writeln(reg.test(str)+'<br>');
str = str.replace(reg, '$');
document.writeln(str);
}

</script>
</body>
</html>




和上一个程序类似,只不过把 var reg = /\d/; 仅此修改而已。 '\d' 的含义就是“过滤数字”。但是,运行仅是查找出第一个匹配的数字后就结束过滤了,原本想把字符串中所有的数字变成“美刀 $”的,看来这段js深深的打击了我。

若是想把字符串中所有的数字变成“美刀 $”或是 RMB 的,我们只需要简单修改 var reg = /\d/g; 其中,'g' 的含义是global,即找出所有的意思。上代码:

代码三:查找字符串中所有的数字,并替换数字为特殊符号 '$'


<!doctype html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<script>
window.onload = function() {
filterNums();
}

function filterNums() {
var str = 'abcefd 123 a456 a789';
var reg = /\d/g;
var reg2 = /\$/g;
document.writeln(str.match(reg)+'<br>');
document.writeln(reg.test(str)+'<br>');
str = str.replace(reg, '$');
document.writeln(str+'<br>');
str = str.replace(reg2, '¥RMB');
document.writeln(str);
}

</script>
</body>
</html>




运行结果满眼的 "$" 和 "¥RMB" ,是不是很养眼呢。。。(这是不是暗示着好好学习,工资向上呢,想想都有点儿小激动)。

回归正题,

若是正则表达式中需要过滤特殊字符 '$',我们可以这样写 var reg2 = /\$/; 举一反三,查找 '&',我们可以这样写 var reg2 = /\&/;

使用 match() 方法过滤并返回了所有的数字且以逗号隔开,我们是不是可以使用 split(',') 方法将其切成成数组,之后便任由我们支配呢!

接下来,我们将引出修饰符的概念。

在代码三中,我们已经体会出到了修饰符的作用,var reg2 = /\$/g,其中 'g' 的含义是检索出全部匹配项。

常用的修饰符仅有两种:

修饰符描述
i执行对大小写不敏感的匹配。
g执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。
代码四:将 'he' 替换成 'she',忽略大小写

<!doctype html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<span id="str"></span>
<script>
window.onload = function() {
filterLetters();
}

function filterLetters() {
var str = 'He is the goddess of the eyes of the majority of the audience!';
//Google翻译:她是广大观众眼中的女神!
var reg = /he/i;
str = str.replace(reg, 'She');
document.getElementById('str').innerHTML=str;
}

</script>
</body>
</html>


我们知道了 'i' 的含义后,这段代码的含义就显而易见了。

此时,我们需要思考的是:若字符串中有多个大小写不一的匹配项时,我们该如何写这个小程序呢?

【未完】

参考手册:http://www.w3school.com.cn/jsref/jsref_obj_regexp.asp
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: