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

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

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

 1 <!doctype html>
 2 <html>
 3 <head>
 4 <meta charset="utf-8">
 5 </head>
 6 <body>
 7 <script>
 8 window.onload = function() {
 9     filterNums();
10 }
11 
12 function filterNums() {
13     var str = 'abcefd 123 a456 a789';
14     var reg = /\d/;
15     document.writeln(str.match(reg)+'<br>');
16     document.writeln(reg.test(str)+'<br>');
17     str = str.replace(reg, '$');
18     document.writeln(str);
19 }
20 
21 </script>
22 </body>
23 </html>

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

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

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

 1 <!doctype html>
 2 <html>
 3 <head>
 4 <meta charset="utf-8">
 5 </head>
 6 <body>
 7 <script>
 8 window.onload = function() {
 9     filterNums();
10 }
11 
12 function filterNums() {
13     var str = 'abcefd 123 a456 a789';
14     var reg = /\d/g;
15     var reg2 = /\$/g;
16     document.writeln(str.match(reg)+'<br>');
17     document.writeln(reg.test(str)+'<br>');
18     str = str.replace(reg, '$');
19     document.writeln(str+'<br>');
20     str = str.replace(reg2, '¥RMB');
21     document.writeln(str);
22 }
23 
24 </script>
25 </body>
26 </html>

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

回归正题,

  • 若是正则表达式中需要过滤特殊字符 '$',我们可以这样写 var reg2 = /\$/; 举一反三,查找 '&',我们可以这样写 var reg2 = /\&/;
  • 使用 match() 方法过滤并返回了所有的数字且以逗号隔开,我们是不是可以使用 split(',') 方法将其切成成数组,之后便任由我们支配呢!

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

 

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

常用的修饰符仅有两种:

修饰符描述
i 执行对大小写不敏感的匹配。
g 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。

 

 

 

代码四:将 'he' 替换成 'she',忽略大小写

 1 <!doctype html>
 2 <html>
 3 <head>
 4 <meta charset="utf-8">
 5 </head>
 6 <body>
 7 <span id="str"></span>
 8 <script>
 9 window.onload = function() {
10     filterLetters();
11 }
12 
13 function filterLetters() {
14     var str = 'He is the goddess of the eyes of the majority of the audience!';
15     //Google翻译:她是广大观众眼中的女神!
16     var reg = /he/i;
17     str = str.replace(reg, 'She');
18     document.getElementById('str').innerHTML=str;
19 }
20 
21 </script>
22 </body>
23 </html>

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

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

 

【未完】

参考手册:http://www.w3school.com.cn/jsref/jsref_obj_regexp.asp

 

posted @ 2014-04-18 09:28  勤劳的码农  阅读(297)  评论(0编辑  收藏  举报