匹配连字符和重叠之间的所有内容?
问题描述:
如何找到连字符与正则表达式之间的所有内容?下面 阵列答案应该是[“AAA”,“BBB”,“CCC”,“DDD”]匹配连字符和重叠之间的所有内容?
<script>
myRe= new RegExp ("xxxxxx");
myArray = myRe.exec("-aaa-bbb-ccc-ddd-");
</script>
而且......如果有逗号的字符串中会发生什么,他们需要包括在数组中?
这是下面好吗...?
["a,a,a","bbb","ccc","ddd"]
答
一个快速和简单的解决方案是寻找单词字符的字符串:
"-aaa-bbb-ccc-ddd-".match(/[\w]+/g)
这将返回["aaa", "bbb", "ccc", "ddd"]
如果您需要在其中配合逗号的字符串以及再您可以向捕获组添加逗号:
// added ',' to [\w,]
"-a,a,a-bbb-ccc-ddd-".match(/[\w,]+/g)
Thi都要返回["a,a,a", "bbb", "ccc", "ddd"]
该解决方案将无法很好地扩展,如果你正在寻找什么一些“-'s之间进行匹配,但如果你有一个简单的使用情况,那么我会说使用简单像上面演示的那样匹配。
更新
因为您的评论表示您需要匹配之间的任何东西“-'s,你可以使用下面的正则表达式:
/[^\-]+/g
这将匹配任何不是” - “以群分,所以:
"-a,@$#$a,a-bbb-ccc-ddd-".match(/[^\-]+/g)
将返回["a,@$#$a,a", "bbb", "ccc", "ddd"]
是的......我需要之间的一切。我认为拆分可能会奏效,但我不认为它会创建一个数组? – gravityboy 2011-04-07 20:22:11
我更新了我的答案。 Split会创建一个数组,但它不起作用,因为它会为您提供与您的测试用例的开头和结尾相匹配的空字符串。 – McStretch 2011-04-07 20:31:15
嗯......它工作,但只匹配它发现的第一个,不重复 – gravityboy 2011-04-07 22:32:40