почему это не удаление (цифра) каждый раз, когда он запускается? - PullRequest
0 голосов
/ 01 ноября 2009
var somestring = "mary(3) apple(2) sky(1)";
$("#removelaststring").unbind("click").bind("click",function(e){

somestring = somestring.replace(/\(\d+\)*$/, "")
alert(somestring);

});

я должен получить

mary(3) apple(2) sky

тогда, если я запусту его, аган

mary(3) apple sky

если запустить снова

mary apple sky

однако этого не происходит, независимо от того, сколько раз я нажимаю, я получаю

mary(3) apple(2) sky

Ответы [ 2 ]

3 голосов
/ 01 ноября 2009

В вашем регулярном выражении есть якорь ($), который требует, чтобы он совпадал только в конце строки. Никакие символы после "(2)" не допускаются. Я думаю, вы хотите это

somestring = somestring.replace(/\(\d+\)([^(]*)$/, "$1")

разрешить любые символы, кроме '(' после удаляемой части. Предполагая, что '(' появится только как часть некоторого "(2)".

0 голосов
/ 01 ноября 2009

Вы заменяете '(n)' в конце строки на '' (пустая строка), поэтому mary(3) apple(2) sky(1) становится mary(3) apple(2) sky, но затем в следующий раз '(n)' больше не будет, поэтому дальнейшая замена не будет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...