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


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

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

     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

  • 相关阅读:
    .net 日期格式化
    grunt 上手
    设计模式的认识
    顺时针打印矩阵
    WCF 框架运行时类图
    Python闭包详解
    软件用了那些技术
    zoj 1610 Count the Colors(线段树延迟更新)
    快速提高自己的技术的办法?有两个方法
    纯win32实现PNG图片透明窗体
  • 原文地址:https://www.cnblogs.com/dereksunok/p/3672473.html
Copyright © 2020-2023  润新知