使用正则表达式解析url,模式与可选字符串不匹配

时间:2014-04-16 12:43:38

标签: javascript regex

我想要解析这些字符串:

?forum=Jiné akce a jiné#comments
?trening=140#$|Pralinka
?novinka=87#comments
?forum=Mimo mísu#comments
?forum=Členské forum#comments
?trening=139#comments

我想输出像

这样的数组
 1. forum 
 2. Jiné akce a jiné
 3. comments

 1. trening
 2. 140
 3. Pralinka

所以我写了以下正则表达式:

\?([a-z]{4,})\=(.+)\#(\$\|)?([a-z]+)

Regex101

但它在第二种情况下不起作用(可选的字符串部分)。

3 个答案:

答案 0 :(得分:3)

请注意,默认情况下,正则表达式区分大小写......因此[a-z]无法与Pralinka匹配。您可以使用i(不区分大小写)标记或使用:

来解决此问题
\?([a-z]{4,})=(.+)#(?:\$\|)?([A-Za-z]+)

请注意,无需转义=#(我们没有处于自由间距模式),我添加了非捕获组(?:...)所以Pralinka将与comment位于同一个捕获组中。

演示版为here

答案 1 :(得分:2)

[a-z]+Pralinka不匹配,因为P是一个大写字母。

Fixed regex

答案 2 :(得分:0)

您需要添加全局标记:/g

http://regex101.com/r/vR0oM4