私は"icon_abc".match(/\bicon_(.*?)\b/);
働きました 、これは印刷します["icon_abc", "abc"]
しかし、使用する"icon=abc".match(/\bicon=(.*?)\b/);
と、abcを取得できず、印刷されます["icon=", ""]
Javascriptでこれらの特殊記号を一致させる方法は? のような: = -
?
私は"icon_abc".match(/\bicon_(.*?)\b/);
働きました 、これは印刷します["icon_abc", "abc"]
しかし、使用する"icon=abc".match(/\bicon=(.*?)\b/);
と、abcを取得できず、印刷されます["icon=", ""]
Javascriptでこれらの特殊記号を一致させる方法は? のような: = -
?
=
その意味で特別な記号ではありません。
たとえば、次のようになります。
"icon=abc".match(/\bicon=(.+)\b/)
これもそうでしょう:
"icon=abc".match(/\bicon=(.*)\b/)
可能な文字列のフィールド全体がカバーされるように、要件をさらに明確にする必要があります。
?を削除します
"icon=abc".match(/\bicon=(.*)\b/);
["icon=abc", "abc"]
使用する:
"icon=abc".match(/\bicon=(.+?)\b/)
問題は*
、先行する RE の 0 個以上に一致することを意味し、?
修飾子によって非貪欲になるため、可能な限り短い一致が返されることです。この場合、単語境界がすぐそこにあるため、長さ 0 の文字列が一致します。
に変更する+
と、1 つ以上に一致することを意味するため、既に単語の境界にある場合に空の一致が得られることはありません。