var s1 = "'abc'as'123'";
line1: document.write(s1.match(/(['"])([^'"]*)\1/g),"<br>");//"abc","123"
line2: document.write(s1.match(/(['"])([^'"]*)\1/),"<br>");//"abc",",abc
line3: document.write(s1.match(/"([^'"]*)"/),"<br>");//"abc",abc我想要的正则意思是''或""包含的字符串为什么
line2得到的不是line3想要的结果thanks by phoenix
没有g,则是找到一个匹配的就停止了。
s1.match(/"([^'"]*)"/);//"abc",abc
match返回一个数组,第一个值是匹配的字符串,第二个值是第一个子匹配,第三个是第二个字匹配...
这里的话/"([^'"]*)"/匹配的字符串就是"abc",([^'"]*)这个括号里的就是第一个子匹配了,是abc,所以write出来是abc。
line2得到的不是line3想要的结果,你照着正则检查一下就知道了。
那line2中间为什么有个 " 呢?
line2: document.write(s1.match(/(['"])([^'"]*)\1/),"<br>");//"abc",",abc
"abc"是匹配结果
"是第一个子匹配结果,对应的正则式中第一个有括号表达式(['"]),这个不就是匹配开头的"。
嗯,您说的很清楚,可是我不能马上理解.现在我明白了:由于line2有2个组合(),所以子匹配是每个()再一次匹配结果.谢谢哦.