正则表达式,如何匹配,但只捕获符号后面的内容

时间:2014-04-13 19:32:50

标签: javascript regex

例如我有一堆这种格式的字符串“/ something / @ wherever”“/ some / #whatiwant” 在这种情况下,我只对#之后的内容感兴趣。

对于两个建议的副本:

Regex: find whatever comes after one thing before another thing

接受的答案是没有我接受的那样简洁,如果我能够想出一种方法来搜索“正则表达式找到一件事之前发生的事情”,那么我真的会感到困惑。

Reference - What does this regex mean?

是正则表达式的参考手册,而不是我的问题的答案,如果它是我的问题的答案所有正则表达式问题应该只是发送到那个方向,因此是重复的。

4 个答案:

答案 0 :(得分:2)

在此示例中,在组-1中的\S+之后捕获非空白区域(#)。

var testString = "/some/#whatiwant";
var testOutput = testString.match(/#(\S+)/)[1];
// alert(testOutput);

如果要同时使用#@进行解析,请使用字符类[]

var testOutput = testString.match(/[#@](\S+)/)[1];

答案 1 :(得分:0)

正则表达式为[^#]+#(.+)

答案 2 :(得分:0)

这取决于你正在使用哪种正则表达式,但你想要的是积极的看法:

(?<=#).*

此正则表达式将匹配所有 AFTER 主题标签,但不匹配主题标签本身。

编辑:我没有查看javascript标记。 js本身并不支持lookbehind,因此您必须使用捕获组,如下所示:

var str = '/something/some#whatIwant',
reg = /#(.*)/;
alert(str.match(reg)[1]);

答案 3 :(得分:0)

尝试:

var arr = ["/something/@wherever","/some/#whatiwant"];
var reg = /[#@](\w+)$/; // matchs after # and @ signs

for ( var i = 0; i < arr.length; i++ ) {
    console.log(reg.exec(arr[i])[1]);
}
RegExp#之后

@匹配(如果您不希望@向前匹配,只需将其从RegExp中删除)

JSFIDDLE