匹配连字符和重叠之间的所有内容?

时间:2011-04-07 20:00:40

标签: javascript regex

如何在正则表达式中找到连字符之间的所有内容? 下面的数组答案应为[“aaa”,“bbb”,“ccc”,“ddd”]

<script>
myRe= new RegExp ("xxxxxx");
myArray = myRe.exec("-aaa-bbb-ccc-ddd-");
</script>

另外......如果字符串中有逗号并且它们需要包含在数组中会发生什么?

这是否正常......?

["a,a,a","bbb","ccc","ddd"]

1 个答案:

答案 0 :(得分:3)

一种快速简便的解决方案是在字符串中查找单词字符:

"-aaa-bbb-ccc-ddd-".match(/[\w]+/g)

这将返回["aaa", "bbb", "ccc", "ddd"]

如果您需要在其中匹配字符串中的逗号,则可以向捕获组添加逗号:

// added ',' to [\w,]
"-a,a,a-bbb-ccc-ddd-".match(/[\w,]+/g)

这将返回["a,a,a", "bbb", "ccc", "ddd"]

如果您正在寻找任何在某些'之间匹配,此解决方案将无法很好地扩展,但如果您有一个简单的用例,那么我会说使用简单像上面演示的那样匹配。

<强>更新

由于你的评论说你需要匹配'-'s之间的任何东西,你可以使用以下正则表达式:

/[^\-]+/g

这将匹配组中不是' - '的任何内容,因此:

"-a,@$#$a,a-bbb-ccc-ddd-".match(/[^\-]+/g)

将返回["a,@$#$a,a", "bbb", "ccc", "ddd"]