Match [ABC DEF] (http://google.com)

Я спрабую адпавядаць наступным радку, без поспеху.

Я гэта да гэтага часу.

/\[([^\]]+)(\([^\)]+)/

Гэта апошняя частка, якая не будзе працаваць (\ ([^ \)] +) .

Іншымі словамі;

<Код> вар мета = "[ABC DEF] (http://google.com)"

  • This part works.

    meta.match(/\[([^\]]+)/) => ABC DEF

  • This doesn't work.

    meta.match(/\[([^\]]+)(\([^\)]+)/)//=> null

Гэта тое, што я хачу.

<Код> [ "ABC DEF", "http://google.com"]

Любы ведае, чаму ён не будзе працаваць?

1

1 адказы

Вы прапусцілі канчатак ] . Акрамя таго, ) ня трэба экраніровать у класе знакаў. Па-трэцяе, вы можаце дадаць завяршальную ) , і, нарэшце, не варта змяшчаць літаральны ( ўнутры (...) , таму што вы не хочаце быць у масіве запалак.

meta.match(/\[([^\]]+)]\(([^)]+)\)/)
                      ^  ^  ^
5
дададзена
Працавалі дасканалыя, дзякуй!
дададзена аўтар Oleander, крыніца
@Reid: Ці павінна яна? Яна працуе без, таму што няма ніякага адкрыцця [, так што не з'яўляецца неадназначным.
дададзена аўтар pimvdb, крыніца
Які замыкае ] павінны быць экранаваныя
дададзена аўтар Reid, крыніца
Ах, я бачу; вы маеце рацыю. Я проста так прывык да магчымасці пазбегнуць гэтага ў тым, што рэгулярныя выразы я нават не лічу, што.
дададзена аўтар Reid, крыніца