【发布时间】:2015-03-07 18:53:39
【问题描述】:
对于正则表达式的粉丝......我拥有的是这个字符串:
"Lorem ipsum dolor FOO IO BAR BA"
我想提取 Title 和一个 Array 大写后缀:
"Lorem ipsum dolor"["FOO", "IO", "BAR", "BA"]
这是我的尝试:
function retrieveGroups( string )
{
var regexp = new RegExp(/(FOO|BAR|BA|IO)/g);
var groups = string.match( regexp ) || [];
var title = string.replace( regexp, "" );
return {title:title, groups:groups};
}
结果:
title : "Lorem ipsum dolor ",
groups : ["FOO" , "IO", "BAR", "BA"]
这很好,但它不会阻止这种情况:
LoremFOO ipBAsum IO dolor FOO
在那个案例中,我只需要结果组中的["FOO"]。
规则看起来很简单……
获取标题。
标题可以全部大写(“LOREM IPSUM”)。
获取大写后缀数组。
字符串中可能不存在组(FOO、BAR、IO、BA)。
如果不是后缀,则不匹配:后缀且不以 空格
从字符串末尾开始匹配(如果可能?)所以如果遇到重复的 Group 参数,不要匹配(上面的问题示例)
我也尝试过string.replace(regexp, function(val) ....,但我不确定它有什么帮助...
不知道它是否有帮助,但fiddle is here。谢谢!
【问题讨论】:
-
为什么你不想匹配
IO? -
因为它不是后缀(因为它后面有一些文字......)并且可能是标题的一部分。 (我需要尽量减少错误)
-
我认为你不想要标题部分...
-
@AvinashRaj 感谢您的支持,是的,我还需要标题(现在添加到规则中,抱歉)。
-
那么,第二个例子的标题部分是什么?
标签: javascript regex regex-group