Javascript 或者交替使用正则表达式会返回比它应该返回的结果更多的结果?

Javascript 或者交替使用正则表达式会返回比它应该返回的结果更多的结果?,javascript,regex,Javascript,Regex,代码是从中修改的 单击按钮以全局搜索任何指定的红色|绿色备选方案 试试看 函数myFunction{ var str=re、绿色、红色、绿色、灰色、绿色、蓝色、黄色; 变量patt1=/蓝色|红色/; var result=str.matchpatt1; document.getElementByIddemo.innerHTML=结果; } 您不应该使用对备选方案有效的捕获组。从正则表达式中删除 改变 var patt1 = /(blue|red)/; 到 单击按钮以全局搜索任何指定的红

代码是从中修改的

单击按钮以全局搜索任何指定的红色|绿色备选方案

试试看

函数myFunction{ var str=re、绿色、红色、绿色、灰色、绿色、蓝色、黄色; 变量patt1=/蓝色|红色/; var result=str.matchpatt1; document.getElementByIddemo.innerHTML=结果; } 您不应该使用对备选方案有效的捕获组。从正则表达式中删除

改变

var patt1 = /(blue|red)/;

单击按钮以全局搜索任何指定的红色|绿色备选方案

试试看

函数myFunction{ var str=re、绿色、红色、绿色、灰色、绿色、蓝色、黄色; 变量patt1=/蓝色|红色/; var result=str.matchpatt1; document.getElementByIddemo.innerHTML=结果; } 您不应该使用对备选方案有效的捕获组。从正则表达式中删除

改变

var patt1 = /(blue|red)/;

单击按钮以全局搜索任何指定的红色|绿色备选方案

试试看

函数myFunction{ var str=re、绿色、红色、绿色、灰色、绿色、蓝色、黄色; 变量patt1=/蓝色|红色/; var result=str.matchpatt1; document.getElementByIddemo.innerHTML=结果; }
因为您在regexp中使用组,所以match retunrns将字符串和group so数组与两个相同的元素相匹配。使用/blue | red/g代替g使匹配在findig第一次匹配后继续搜索

函数myFunction{ var str=re、绿色、红色、绿色、灰色、绿色、蓝色、黄色; var patt1=/blue | red/g; var result=str.matchpatt1; demo.innerHTML=结果; } 单击按钮以全局搜索任何指定的红色|绿色备选方案

试试看

因为您在regexp中使用了组,所以match retunrns将字符串和group so数组与两个相同的元素相匹配。使用/blue | red/g代替g使匹配在findig第一次匹配后继续搜索

函数myFunction{ var str=re、绿色、红色、绿色、灰色、绿色、蓝色、黄色; var patt1=/blue | red/g; var result=str.matchpatt1; demo.innerHTML=结果; } 单击按钮以全局搜索任何指定的红色|绿色备选方案

试试看

/blue | red/g我猜/blue | red/g我猜你能告诉我为什么需要删除吗?我学到的格式是JavaScript正则表达式x | y表达式?非常感谢@user18481,捕获组,该组在本例中不适用的替代方案上工作…您能告诉我为什么需要删除吗?我学到的格式是JavaScript正则表达式x | y表达式?非常感谢@user18481,捕获组,该组处理在本例中您不需要的备选方案…请您告诉我为什么需要添加全局匹配。如果没有/g,它将在第一场比赛后停止。所以它应该返回'red'@user18481,这取决于你需要什么-如果你只想得到第一个匹配,然后删除g,如果你想得到全部而不是删除它,你能告诉我为什么我需要添加全局匹配吗。如果没有/g,它将在第一场比赛后停止。所以它应该返回'red'@user18481,这取决于你需要什么-如果你只想得到第一个匹配,然后删除g,如果你想得到所有,不要删除它