1、var reg=/([Jj]ava)(Script)?/;
var b="JavaScript is not Java";
alert(b.match(reg));
结果为:JavaScript Script Java
2、var reg=/([Jj]ava)(Script)?/g;
var b="JavaScript is not Java";
alert(b.match(reg));
结果为:JavaScript Java
为什么加了全局标志 Script却没了 求解释???? :cry: :cry: :cry: :(
["JavaScript", "Java", "Script"]
这个数组有三个元素。0元素正好是整个匹配,1元素和2元素是包含了匹配中出现的任一个子匹配即"Java", "Script" ([Jj]ava)和(Script))
如果设置了全局标志g
[quote]/([Jj]ava)(Script)?/g;[/quote]
正则出来结果是j/JavaScript 或者 j/Java 。j/Java 这个是必须包含的
所以结果就是JavaScript Java
第一个结果是:["JavaScript", "Java", "Script"] 吧?它们分别是匹配的整串、匹配的子串们(用括号包起来的部分)
第二个加了g,可能有多个结果,只返回了匹配到的所有整串
如果没有设置全局标志 (g),数组的0元素包含整个匹配,而第 1 到 n 元素包含了匹配中曾出现过的任一个子匹配。这相当于没有设置全局标志的 exec 方法。如果设置了全局标志,元素0到n中包含所有匹配。