regex的exec返回null

时间:2018-10-19 23:07:53

标签: javascript regex

这是我的代码段:

var myString = '#EXTINF:-1 group-title="|FR| CHAINES FRANÇAISES |FR|",|FR|*****CANALSAT*****|FR|';
var group_title = /(group-title=")(\S*)["]/;
var matchgroup_title = group_title.exec(myString);
console.log(matchgroup_title);

我对regex不熟悉,所以我听不懂这段代码。为什么exec在这里返回null?

2 个答案:

答案 0 :(得分:1)

(group-title=")匹配group-title="

(\S*)匹配零个或多个非空白字符,因此|FR|

["]然后匹配",但是没有一个(嗯,有,但是首先有空格字符,所以没有匹配项。)

答案 1 :(得分:1)

由于存在\S*,因此存在问题。如果将其弹出到regex101.com中,将会看到:

因此,\s*将匹配任何非空白字符,并且空格被视为空白字符,因此不匹配。您只需使用[^"]来检查是否有其他引号。

您可以将其简化为:

var myString = '#EXTINF:-1 group-title="|FR| CHAINES FRANÇAISES |FR|",|FR|*****CANALSAT*****|FR|';
var group_title = /group-title="([^"]+)"/;
var matchgroup_title = group_title.exec(myString);
console.log(matchgroup_title);