正则表达式中'g'标志的含义是什么?

时间:2012-10-20 23:36:11

标签: javascript regex

正则表达式中g标志的含义是什么?

/.+/g/.+/之间有什么区别?

9 个答案:

答案 0 :(得分:102)

g用于全局搜索。这意味着它将匹配所有出现。您通常也会看到i,这意味着忽略大小写。

参考:global - JavaScript | MDN

  

“g”标志表示应该针对字符串中的所有可能匹配来测试正则表达式。

没有g标志,它只会测试第一个。

答案 1 :(得分:27)

Javascript中的示例解释:

> 'aaa'.match(/a/g)
[ 'a', 'a', 'a' ]

> 'aaa'.match(/a/)
[ 'a', index: 0, input: 'aaa' ]

答案 2 :(得分:11)

g是全局搜索标记。

全局搜索标志使RegExp在整个字符串中搜索模式,创建一个可以找到与给定模式匹配的所有实例的数组。

因此/.+/g/.+/之间的区别在于g版本会发现每次出现而不是第一次出现。

答案 3 :(得分:9)

/.+/g/.+/之间没有区别,因为它们只会匹配整个字符串一次。如果正则表达式可以匹配多次或包含组,g会有所不同,在这种情况下.match()将返回匹配数组而不是组数组。

答案 4 :(得分:7)

正如@matiska指出的那样,<div id="map" style="width:400px;height:600px;"></div> <script> var map; function initMap() { map = new google.maps.Map(document.getElementById('map'), { center: { lat: -34.397, lng: 150.644 }, zoom: 8 }); } </script> <script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCwXow-YSSaavXynAkBF1TkpAPKijAC-Qk&callback=initMap" async defer></script>标志也设置了g属性。

这样做的一个非常重要的副作用是,如果您对匹配的字符串重复使用相同的正则表达式实例,它最终会失败,因为它只会在lastIndex开始搜索。

lastIndex

答案 5 :(得分:6)

除了已经提到的g标志的含义之外,它还会影响regexp.lastIndex属性:

  

lastIndex是正则表达式的读/写整数属性   指定开始下一个匹配的索引的实例。   (...)仅当正则表达式实例时才设置此属性   使用“g”标志表示全局搜索。

参考:Mozilla Developer Network

答案 6 :(得分:3)

正则表达式中的G是一个定义全局搜索,这意味着它将搜索所有行上的所有实例。

答案 7 :(得分:0)

将给出基于字符串的示例。如果我们想删除所有事件 串。 假设我们要从“ hello world”中删除所有出现“ o”和“”的事件

"hello world".replace(/o/g,'');

答案 8 :(得分:0)

  1. g ->返回所有匹配项
  2. without g ->返回第一个匹配项

示例:

  1. '1 2 1 5 6 7'.match(/\d+/)返回["1", index: 0, input: "1 2 1 5 6 7", groups: undefined]。如您所见,我们只能进行第一场比赛"1"
  2. '1 2 1 5 6 7'.match(/\d+/g)返回所有匹配项["1", "2", "1", "5", "6", "7"]的数组。