-2

我已经"icon_abc".match(/\bicon_(.*?)\b/);工作了,打印出来的["icon_abc", "abc"]

但是当我使用时"icon=abc".match(/\bicon=(.*?)\b/);,我无法得到 abc,它会打印["icon=", ""]

如何在 Javascript 中匹配这些特殊符号?如: = -

4

3 回答 3

4

=不是那个意义上的特殊符号。

这会做,例如:

"icon=abc".match(/\bicon=(.+)\b/)

也可以这样:

"icon=abc".match(/\bicon=(.*)\b/)

您需要进一步阐明您的要求,以便涵盖可能字符串的整个字段。

于 2012-11-02T04:47:12.527 回答
0

删除 ?

"icon=abc".match(/\bicon=(.*)\b/);
["icon=abc", "abc"]
于 2012-11-02T04:52:07.003 回答
0

利用:

"icon=abc".match(/\bicon=(.+?)\b/)

问题是这*意味着匹配零个或多个前面的 RE,并且?修饰符使其非贪婪,因此它将返回最短的匹配。在这种情况下,零长度字符串匹配,因为单词边界就在那里。

更改为+意味着它将匹配 1 个或更多,因此当它已经位于单词边界时,您不会得到空匹配。

于 2012-11-02T04:56:10.043 回答