正则表达式匹配字符串的开头并捕获最后一部分

时间:2012-12-10 02:51:17

标签: javascript regex string

我有以下字符串

big-div button-green
big-div button-red
big-div button-yellow

我希望得到以下结果

green
red
yellow

我设法得到这个/\sbutton-[^\s]*/gi,但匹配整个字符串,如button-yellow

提前致谢!

3 个答案:

答案 0 :(得分:1)

将一个捕获组放在[^\s]*周围,您可以将其作为第一个捕获组进行访问。

或者,我会把它写成......

var match = (str.match(/\sbutton-(\S*)/gi) || [])[1];

这会为您提供匹配,如果匹配不匹配,则为undefined

如果str也是一个类,我会交换(?:^|\s)(?:$|\s)的边界,或者在\s上进行匹配,并将匹配的字符串换成空格。< / p>

答案 1 :(得分:1)

str.match(/\sbutton-([^\s]*)/i)[1]

答案 2 :(得分:1)

答案在标题中:只需创建一个捕获组:

/\sbutton([^\s]+)$/i

并获取返回的matches数组的第一个元素,它只包含那些你感兴趣的字符