写一个简单的正则表达式应用

原有字符串:

var a = "string = 'abc'",b = "number = '123'"

想通过正则表达式替换成:

var a="",b=""

接下来看我操作的过程

1.

//var a = "string = 'abc'",b = "number = '123'"
var str = "var a = \"string = \'abc\'\",b = \"number = \'123\'\"";
var reg = /['"][\w]+['"]/g;
document.write(str.replace(reg,'""'));

输入结果:

var a = "string = """,b = "number = """

这时发现只把abc和123替换掉成了双引号,为什么呢

主要是\w的使用:

\w 匹配包括下划线的任何单词字符。等价于 '[A-Za-z0-9_]'。

因为在"string = "中包含=及空格,所以不能匹配

接下来我做了个调整:

2.

//var a = "string = 'abc'",b = "number = '123'"
var str = "var a = \"string = \'abc\'\",b = \"number = \'123\'\"";
var reg = /['"][\w\W]+['"]/g;
document.write(str.replace(reg,'""'));

这时输出结果:

var a = ""

这个是因为正则默认是贪婪匹配,它会匹配最多值,所以直接把string = 'abc'",b = "number = '123'都匹配到了。

接下来禁止它的贪婪匹配,

?  当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串 "oooo",'o+?' 将匹配单个 "o",而 'o+' 将匹配所有 'o'。

按下来做的调整:

3.

var str = "var a = \"string = \'abc\'\",b = \"number = \'123\'\"";
var reg = /['"][\w\W]+?['"]/g;
document.write(str.replace(reg,'""'));

输出结果:

var a = ""abc""number = """

这时的匹配结果还是有问题

它把“"string = '”做成了一组进行了匹配,也就是当正则搜索到一个引号时无论是单引号还是双引号都默认成一组,这个是由['"]决定的。应该是做到如果开始匹配的是单引号,那结束也要匹配成单引号。这个如何实现呢?

\num 匹配 num,其中 num 是一个正整数。对所获取的匹配的引用。例如,'(.)\1' 匹配两个连续的相同字符。

接着继续做出修改:

4.

var str = "var a = \"string = \'abc\'\",b = \"number = \'123\'\"";
var reg = /(['"])[\w\W]+?\1/g;
document.write(str.replace(reg,'""'));

结果输出:

var a = "",b = ""

OK,结果正是要实现的效果。

转载于:https://www.cnblogs.com/guopei/archive/2011/05/04/2036649.html

javascript 正则表达式小案例相关推荐

  1. Javascript函数小案例--《找质数》

    什么是质数 除了1和其本身外,没有能被其整除的数. 我们知道: 1.十以内的质数有: 2, 3, 5, 7. 1 既不是质数也不是合数, 所以, 先把1划掉. 2. 再划掉除2以外, 所有2的倍数. ...

  2. JavaScript 各种小案例

    1.题目----判断时间阶段 用户输入几点弹出问候信息: 用户输入12点 中午 用户输入18点 晚上 用户输入23点 深夜 建议:通过比较运算符弹出对应值 <script>var time ...

  3. 《JavaScript 正则表达式迷你书》知识点小抄本

    介绍 这周开始学习老姚大佬的<JavaScript 正则表达式迷你书> , 然后习惯性的看完一遍后,整理一下知识点,便于以后自己重新复习. 我个人觉得:自己整理下来的资料,对于知识重现,效 ...

  4. JavaScript基础语法及小案例

    目录 JavaScript基础语法 1. 变量声明和赋值 2. 数据类型 1) 基本数据类型 2) 复合数据类型(引用类型) 3) 特殊数据类型 3. 运算符 1) 算术运算符 2) 赋值运算符 3) ...

  5. javascript正则表达式大括号、中括号、小括号的作用以及应用场景

    在JavaScript正则表达式中,大括号 {}.中括号 [] 和小括号 () 都有不同的作用和应用场景. 大括号 {} 在正则表达式中,大括号 {} 表示重复次数.以下是一些常见的应用场景: {n} ...

  6. HTML+CSS+JavaScript小案例(注册页面表单验证轮播图跳转主页动态表格select联动)

    案例:(表单验证) <!DOCTYPE html> <html lang="en"> <head><meta charset=" ...

  7. Javascript小案例(一):仿淘宝搜索框用户输入事件的实现

    淘宝是我们经常用的一个网上购物平台,打开淘宝网首页,找到淘宝首页的搜索框,如下如所示: (截图日期:2017年6月18日) 大家可以看到,当页面一打开,搜索框中就可以看到灰色字体"少女高跟鞋 ...

  8. JavaScript 国庆倒计时小案例

    本次实现js国庆倒计时小案例 开发工具与关键技术:Visual Studio 2015 JavaScript 当然 首先还是先写出大概样式如下图: 之后便是我的css样式了: 下图便是在页面加载完成的 ...

  9. javaScript小案例------js实现手风琴效果篇

    原生js书写手风琴效果 js手风琴效果 第一种方法 手风琴需求 html和css: html: css: js animate.js index.js 第二种方法 js手风琴效果 我用了两种方法来完成 ...

  10. JavaScript正则表达式的学习

    JavaScript正则表达式的学习 1. 正则表达式概述 1.1 什么是正则表达式 ​ 正则表达式( Regular Expression )是用于匹配字符串中字符组合的模式.在 JavaScrip ...

最新文章

  1. 虚幻4引擎角色蓝图Character的Movement组件学习
  2. mq多个消费者消费一个消息_消息中间件——RabbitMQ(五)快速入门生产者与消费者...
  3. Python开发培训前景如何?
  4. 第5章 Python 数字图像处理(DIP) - 图像复原与重建2 - 瑞利噪声
  5. Lucky Number(HDU-4937)
  6. Asp.net MVC 3实例学习之ExtShop(一)————创建应用并设置开发环境
  7. linux arm fpu初始化,ARM处理器的浮点运算单元(FPU)
  8. js 获取 sharepoint 2010 网站信息(title,id,language……)
  9. 公共云存储服务的可扩展性和性能
  10. java万年历算法_寿星万年历---java算法实现
  11. 可视化编辑json数据——json editor
  12. jsjq面试笔记(上)
  13. linux下计算时间,linux 日期时间计算
  14. 【AppStore排行榜游戏安利】目录
  15. jzojWZK打雪仗【高精】【DP】【卡特兰数】
  16. css 如何选择同一个class下的第一个div?
  17. vue中加载腾讯地图(html形式)
  18. Bert模型详解和训练实例
  19. C#入门教程(一)visual studio与winform
  20. 空气动力研究与发展中心计算机所,中国空气动力研究与发展中心报告.pdf

热门文章

  1. 二叉树最小结构(C++版本)
  2. 16.了解如何把vector和string数据传给旧的API
  3. php utc时区设置,php DateTimeZone 设置UTC 无效
  4. awx文件解析,运用NCL处理风云卫星2E的AWX格式数据的总结
  5. php+模版取余,PHP取余函数介绍MOD(x,y)与x%y_php技巧
  6. qnap自带有mysql吗_关于威联通QNAP NAS应用—Container Station 容器套件
  7. mysql 库迁移工具_mysql数据库迁移,有什么工具或许办法
  8. 换了路由器电脑都连不上网了_如果你连汽滤多久换一次,都不知道,就不要说自己是老司机了...
  9. matlab拟合分析画不出线,lsqcurvefit曲线拟合后,用polt函数画不出拟合的图形
  10. filter动态参数 maven_多环境下Maven项目的管理