正则表达式那些事儿(二)
2014-04-18 09:28
197 查看
话接上回,我们写了第一个过滤字母的简单程序,和大家一起了解了正则表达式的基础知识。这回,我们以一个实例开始这篇稿子。
代码二:查找字符串中的数字
和上一个程序类似,只不过把 var reg = /\d/; 仅此修改而已。 '\d' 的含义就是“过滤数字”。但是,运行仅是查找出第一个匹配的数字后就结束过滤了,原本想把字符串中所有的数字变成“美刀 $”的,看来这段js深深的打击了我。
若是想把字符串中所有的数字变成“美刀 $”或是 RMB 的,我们只需要简单修改 var reg = /\d/g; 其中,'g' 的含义是global,即找出所有的意思。上代码:
代码三:查找字符串中所有的数字,并替换数字为特殊符号 '$'
运行结果满眼的 "$" 和 "¥RMB" ,是不是很养眼呢。。。(这是不是暗示着好好学习,工资向上呢,想想都有点儿小激动)。
回归正题,
若是正则表达式中需要过滤特殊字符 '$',我们可以这样写 var reg2 = /\$/; 举一反三,查找 '&',我们可以这样写 var reg2 = /\&/;
使用 match() 方法过滤并返回了所有的数字且以逗号隔开,我们是不是可以使用 split(',') 方法将其切成成数组,之后便任由我们支配呢!
接下来,我们将引出修饰符的概念。
在代码三中,我们已经体会出到了修饰符的作用,var reg2 = /\$/g,其中 'g' 的含义是检索出全部匹配项。
而常用的修饰符仅有两种:
代码四:将 'he' 替换成 'she',忽略大小写
我们知道了 'i' 的含义后,这段代码的含义就显而易见了。
此时,我们需要思考的是:若字符串中有多个大小写不一的匹配项时,我们该如何写这个小程序呢?
【未完】
参考手册:http://www.w3school.com.cn/jsref/jsref_obj_regexp.asp
代码二:查找字符串中的数字
<!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 | 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。 |
<!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