Oto przykładowy ciąg, który chcę znaleźć:

var test = "High=50";
var test2 = "Low=-8.7";

Zarówno pasmo liczbowe niskiego, jak i wysokiego ciągu może wynosić od -9.99 - 99,99. Oto regex, który próbowałem, ale nie działa:

var highPattern = "/High=/^-?[0-9]\d*(\.\d+)?$"    

Ale kiedy próbuję

var highRegExp = new RegExp(highPattern);

if(highRegExp.test(test)){
    alert("true");
}else{alert("flase")}

Zwraca fałszywe za każdym razem.

Tim, w komentarzach zapytał, dlaczego potrzebuję tutaj regexa. Pozwól mi wyjaśnić, testuję ciąg, który może być zbudowany jak: "Low = 2 High = 15,5". Jeśli moja dom zostanie zaktualizowany, a zmienia się wysoka wartość, którą należy usunąć "High = 15,5" i dodaj "High = 20". Zakres numeryczny może być w dowolnym miejscu od -9.99 do 99,99.

0
Bender Bending 26 czerwiec 2017, 16:29

3 odpowiedzi

Najlepsza odpowiedź

Jeśli chcesz zapewnić format:

new RegExp(/^(High|Low)\=-{0,1}\d{1,2}\.\d{2}$/).test("High=-0.12")

Jeśli chcesz wyodrębnić numer, którego można również użyć (łatwiej odczytać, w porównaniu do regexa)

Number(test.split("=")[1])

Edytuj:

Ten również sprawdza zasięg (-9.99 do 99,99):

^(High|Low)\=(-[0-9]{1}|[0-9]{1,2})(\.[0-9]{1,2}){0,1}$

2
newBee 26 czerwiec 2017, 13:58

Możesz użyć następującego REGEX:

\-?[0-9]{1,2}\.?[0-9]{0,2}
0
Secespitus 26 czerwiec 2017, 13:37

Cóż, odpowiadając na twoje pytanie, które możesz użyć /=-?\d{1,2}(\.\d{1,2})?/, przykład:

let reg = /=-?\d{1,2}(\.\d{1,2})?/;
alert(reg.test("High=50"));
alert(reg.test("Low=-8.7"));
2
Cleiton 26 czerwiec 2017, 13:35