Mam ciąg, które wyglądają mniej więcej takjavascript mecz podciąg po regexp
something30-mr200
chciałbym, aby wszystko po mr
(Zasadniczo # następnie mr) * zawsze ma być -mr
Każda pomoc będzie doceniana.
Mam ciąg, które wyglądają mniej więcej takjavascript mecz podciąg po regexp
something30-mr200
chciałbym, aby wszystko po mr
(Zasadniczo # następnie mr) * zawsze ma być -mr
Każda pomoc będzie doceniana.
Co ze znajdowaniem pozycji -mr, a następnie pobrać z niej podciąg +3?
To nie jest wyrażenie regularne, ale wydaje się działać z twoim opisem?
var result = "something30-mr200".split("mr")[1];
lub
var result = "something30-mr200".match(/mr(.*)/)[1];
Dlaczego nie po prostu:
-mr(\d+)
Potem coraz zawartość grupy przechwytywania?
Co o:
function getNumber(input) { // rename with a meaningful name
var match = input.match(/^.*-mr(\d+)$/);
if (match) { // check if the input string matched the pattern
return match[1]; // get the capturing group
}
}
getNumber("something30-mr200"); // "200"
Wow, prawie identyczne rozwiązanie, praktycznie w tym samym czasie .. Pozdrawiam :). – treznik
Czy na pewno chcesz przetestować 'match [1]'? Zostanie to ocenione na * false *, jeśli jest to '0'. – Gumbo
@Gumbo: To nie oceni false, ponieważ dopasowania to: ** Ciągi ** nie ** Liczby **, i t będzie wartościować tylko na false, jeśli dopasowanie [1] jest pustym łańcuchem. – CMS
Można użyć wyrażenia regularnego jak ten Bart dał wam, ale sugeruję, używając mecz zamiast zastąpić, ponieważ w przypadku, gdy nie zostanie znaleziona, wynik jest cały łańcuch podczas używania zamień, podczas gdy wartość null podczas używania dopasowania, co wydaje się bardziej logiczne. (ogólnie jednak).
Coś takiego byłoby rade:
functiong getNumber(string) {
var matches = string.match(/-mr([0-9]+)/);
return matches[1];
}
getNumber("something30-mr200");
może pracować dla Ciebie.
// Perform the reg exp test
new RegExp(".*-mr(\d+)").test("something30-mr200");
// result will equal the value of the first subexpression
var result = RegExp.$1;
Nie ma potrzeby dołączania pierwszego '. *', A łącznik nie potrzebuje ucieczki. Działa to również: '" -mr (. *) "'. Ale '. *' Jest niebezpieczne: jeśli po '" -mr "jest dużo więcej tekstu,' '* *" je ". Oczywiście PO nie bardzo wiedział, jaki tekst może nadejść po "-mr". –
To dobry punkt. Zakładałem, że PO będzie chciał wszystkiego po "-mr". Zmodyfikowałem kod, aby usunąć ujęcie przed łącznikiem i ograniczyć podwyrażenia do cyfr. Uciekam z przyzwyczajenia bardziej niż cokolwiek innego. :) –
zapomniałeś zamknąć łańcuch '" mr' –
Dzięki, teraz stały – Kamarey