正则表达式不匹配

时间:2012-06-16 14:36:25

标签: javascript html regex

这是我的字符串:

<link href="/post?page=4&amp;tags=example" rel="last" title="Last Page">

从那里我尝试使用这个正则表达式从4参数中获取page

link href="/post?page=(.*?)&amp;tags=(.*?)" rel="last"

然后我会收集第一组中的4个,tags参数有一个通配符,因为内容可以更改。但是,我似乎没有与此匹配,任何人都可以帮忙吗?

而且我知道我不应该使用正则表达式来解析HTML,但这只是一件小事而且为此导入一个巨大的模块将是一种浪费。

4 个答案:

答案 0 :(得分:3)

假设您使用的是/regex literal/,则需要将/中的\/转义为href

或者,它取决于你如何获得这个字符串。它是真的以这种方式打字,还是你正在读出的innerHTML的一部分?如果是这种情况,那么innerHTML就不会像你期望的那样,因为浏览器会“标准化”它。

如果它是innerHTML,那么获取标记要容易得多,然后获取标记的{{1}}属性,然后是正则表达式。

答案 1 :(得分:1)

我认为将捕获组更改为稍微不同的东西可能会更好,但会将所有内容捕获到终止字符:

link href="/post?page=([^&]+)&amp;tags=([^\"]+)" rel="last"

首先在字符组中使用否定字符告诉正则表达式引擎“捕获除此处列出的字符之外的所有字符”。这使得捕获所有内容变得非常容易,直到它达到终止字符,例如amperstand和double-quote。假设您正在使用PHP或Java,这也应该略微提高正则表达式的性能。

答案 2 :(得分:1)

link href="/post\?page=(.*?)&amp;tags=(.*?)" rel="last"
你在?

之前忘记了斜杠

答案 3 :(得分:0)

如果page参数始终排在第一位,请尝试PCRE /\?page=(\d+)/。匹配组1将包含页码。