我遇到了一个我似乎无法解决的奇怪问题...... 基本上,我有这个正则表达式返回我在捕获组中没有的东西,并且它不会返回实际捕获的组。这是正则表达式:
"localhost/a/b/c".match(/\/a\/b\/(.*?)/g);
据我所知,这应该返回["c"]
......但它会返回:
["/a/b/"]
我做错了什么?我认为被捕的团体应该被归还,而不是被忽视。
答案 0 :(得分:6)
尝试:" localhost / a / b / c" .match(// a / b /(。+)/)[1]
在原始正则表达式"localhost/a/b/c".match(/\/a\/b\/(.*?)/g);
.
表示任何字符*
表示前一个字符类匹配0 - 无限次?
意味着匹配尽可能少的先前指定的字符,同时仍然匹配正则表达式的其余部分,但由于组之后没有任何内容,此组将有效捕获任何内容g
修饰符,至少不需要这个例子。
$('#myDiv').append( "localhost/a/b/c".match(/\/a\/b\/(.+)/)[1] );

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="myDiv"><div>
&#13;