在我的代码中,我基于_分割字符串并获取数组中的第二项。
var element = $(this).attr('class');
var field = element.split('_')[1];
带来好运,给我带来好运。工作好了!
但是,现在我有了一个看起来像good_luck_buddy的类。我如何让我的javascript忽略第二个_,给我luck_buddy?
我找到了var field = element。Split (new char [] {'_'}, 2);在c# stackoverflow中回答,但它不起作用。我尝试在jsFiddle…
这里有一个RegExp可以完成这个任务。
'good_luck_buddy' . split(/^.*?_/)[1]
首先,它迫使比赛从
从“^”开始。然后它匹配任何数字
换句话说,不是'_'的字符
所有字符在第一个“_”之前。
“?'表示最小字符数
使整个模式匹配的是
由'.*?“因为它是被遵循的
通过'_',然后包含在匹配中
作为最后一个角色。
因此split()使用这样的匹配
部分作为它的“分配器”,并将其从
结果。所以它删除了所有东西
直到并包括第一个“_”和
剩下的作为第二元素
结果。第一个元素是“”表示
匹配部分之前的部分。它是
“因为比赛从头开始。”
还有其他regexp作为
很像Chandu给出的/_(.*)/
在之前的回答中。
/ ^ * ?_/对你有好处
能理解它没有什么吗
必须了解这个特殊角色
使用replace()捕获组。
使用捕获括号:
'good_luck_buddy'.split(/_(.*)/s)
['good', 'luck_buddy', ''] // ignore the third element
它们被定义为
如果分隔符包含捕获括号,匹配的结果将在数组中返回。
在这个例子中,我们要在_处分割。*(即分割分隔符是以_开头的子字符串),但也让结果包含分隔符的一部分(即_之后的所有内容)。
在这个例子中,我们的分隔符(匹配_(.*))是_luck_buddy,捕获的组(在分隔符内)是lucky_buddy。如果没有捕获圆括号,luck_buddy (matching .*)将不会包含在结果数组中,因为它是简单分割的情况,分隔符不包括在结果中。
我们使用s regex标志来创建。匹配换行符(\n),否则它只会分割到第一个换行符。
这里有一个RegExp可以完成这个任务。
'good_luck_buddy' . split(/^.*?_/)[1]
首先,它迫使比赛从
从“^”开始。然后它匹配任何数字
换句话说,不是'_'的字符
所有字符在第一个“_”之前。
“?'表示最小字符数
使整个模式匹配的是
由'.*?“因为它是被遵循的
通过'_',然后包含在匹配中
作为最后一个角色。
因此split()使用这样的匹配
部分作为它的“分配器”,并将其从
结果。所以它删除了所有东西
直到并包括第一个“_”和
剩下的作为第二元素
结果。第一个元素是“”表示
匹配部分之前的部分。它是
“因为比赛从头开始。”
还有其他regexp作为
很像Chandu给出的/_(.*)/
在之前的回答中。
/ ^ * ?_/对你有好处
能理解它没有什么吗
必须了解这个特殊角色
使用replace()捕获组。