2-10replaceAll

2-10replaceAll

相关截图:

https://img1.sycdn.imooc.com//climg/616febc5095c5a3e10000384.jpghttps://img1.sycdn.imooc.com//climg/616febcf0917ab8410000302.jpg

问题描述:

图一不需要/g不报错

图二没有加上/g报错,是因为他是正则表达式所以必须得加/g吗

下载视频          

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小李 2021-10-20 18:33:28

同学你好,这里理解有些偏差,并不是因为它是正则表达式所以要加/g,而是这个g是全局(global)的意思。

例:var str = "aabbcc" 用 replace 只能替换单个元素如下图。

https://img1.sycdn.imooc.com//climg/616ff049097a74da05010048.jpg

如用replaceAll是全部替换如下图,既然是全部替换所以就要用到g修饰符。

https://img1.sycdn.imooc.com//climg/616ff069091307d805200056.jpg

同学可能还会有疑问,replace加/g修饰符也可以做到全部替换,那为什么还要replaceAll方法,这是因为语义化上可以表达的更加方便与直观,所以才有的replaceAll方法。

祝学习愉快~


  • 清夏_ #1

    这两个表达式都能全局将b替换  为什么下面就要加修饰符g   我感觉还是因为g前面本身是一个正则把  要不然 完全可以采用第一种写法呀老师    那种正则写法意义何在

    https://img1.sycdn.imooc.com//climg/633405bc09c544a200000000.jpg

    2022-09-28 16:31:30
  • 同学你好,确实能这两种方法都能将b做替换没问题。但是否加g在上面提问的同学有问到,如果不加g为什么报错。同学可以将g取消看看如下:

    https://img1.sycdn.imooc.com//climg/6334095009410b7e07460217.jpg

    https://img1.sycdn.imooc.com//climg/63340958090e337f07920129.jpg

    我们将报错翻译一下看看如下:

    https://img1.sycdn.imooc.com//climg/6334097b09ef2f3f13280149.jpg

    那么根据以上报错我们进行一个知识扩展:

    https://img1.sycdn.imooc.com//climg/63340a1f096f140d17270702.jpg

    如上图replaceAll()官方给出的解答:

    当使用一个 regex(正则) 时,您必须设置全局(“ g”)标志, 否则,它将引发 TypeError:“必须使用全局 RegExp 调用 replaceAll”。

    那么至于为什么会有这种写法,以下是结合实际工作的经验如使用字符串进行匹配那么直接填"b"即可,但是如果这是用户输入的它本身是个变量,恰巧这又是随便输入的它不符合任何规则,那么我就需要使用到正则的这种方式。

    祝学习愉快!

    2022-09-28 16:58:45
  •   bb b b b b b b b 

    2023-03-03 21:41:18
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师