正则表达式中g
标志的含义是什么?
/.+/g
和/.+/
之间有什么区别?
答案 0 :(得分:102)
g
用于全局搜索。这意味着它将匹配所有出现。您通常也会看到i
,这意味着忽略大小写。
“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”标志表示全局搜索。
答案 6 :(得分:3)
正则表达式中的G是一个定义全局搜索,这意味着它将搜索所有行上的所有实例。
答案 7 :(得分:0)
将给出基于字符串的示例。如果我们想删除所有事件 串。 假设我们要从“ hello world”中删除所有出现“ o”和“”的事件
"hello world".replace(/o/g,'');
答案 8 :(得分:0)
g
->
返回所有匹配项without g
->
返回第一个匹配项示例:
'1 2 1 5 6 7'.match(/\d+/)
返回["1", index: 0, input: "1 2 1 5 6 7", groups: undefined]
。如您所见,我们只能进行第一场比赛"1"
。 '1 2 1 5 6 7'.match(/\d+/g)
返回所有匹配项["1", "2", "1", "5", "6", "7"]
的数组。