Po pierwsze, masz jakieś redundancję:
^([0-8][0-9]|[9][0])°\s([0-4][0-9]|[5][9])'$
może stać się po prostu:
^([0-8][0-9]|90)°\s([0-4][0-9]|59)'$
Następny masz problem logiczny, w swoim drugim meczu, jesteś wtedy dopasowanie 0-4 0-9 (czyli 00-49), a następnie dopasowanie tylko 59. można to zmienić na:
^([0-8][0-9]|90)°\s[0-5][0-9]'$
dopasować 00-59
Następny spójrzmy na swojej modyfikacji sekundach:
\s([0-4][0-9]|[5][9],[0-9])''$
sam problem jak poprzednio, z wyjątkiem teraz dodasz po przecinku, ale nie do obu stronach | więc będzie pasować tylko z jednej strony, jeśli mamy rozwiązać ten problem jak my ustalona ostatni otrzymujemy:
^([0-8][0-9]|90)°\s[0-5][0-9]'\s[0-5][0-9],[0-9]''$
Następny masz dwa apostrofów zamiast podwójny cudzysłów, więc ustalenie, że:
^([0-8][0-9]|90)°\s([0-5][0-9])'\s[0-5][0-9],[0-9]"$
Teraz musimy zadać sobie pytanie, czy pierwsza cyfra tego obowiązkowego? Prawdopodobnie nie. Tak oznaczyć ją jako potencjalnie brakuje użyciu ?
^([0-8]?[0-9]|90)°\s[0-5]?[0-9]'\s[0-5]?[0-9],[0-9]"$
Dalej, jest ułamkowa część druga obowiązkowa? Chyba nie, więc oznaczyć ją jako potencjalnie brakuje:
^([0-8]?[0-9]|90)°\s[0-5]?[0-9]'\s[0-5]?[0-9](,[0-9])?"$
Wreszcie, jestem przy założeniu, że każda część z wyjątkiem stopni nie jest wymagana, oznaczyć je jako potencjalnie brakuje:
^([0-8]?[0-9]|90)°(\s[0-5]?[0-9]')?(\s[0-5]?[0-9](,[0-9])?")?$
tam inne rzeczy możesz zrobić, żeby było lepiej. Ale to powinno zacząć.
Czy możesz określić "problemy" z konkretnymi błędnie zaakceptowanymi lub odrzuconymi wartościami? Z pewnością możesz je po prostu skopiować z testów? ;) –
'^ ([0-8] [0-9] | [9] [0]) ° \ s ([0-4] [0-9] | [5] [9]) '\ s ((?: [0-4] [0-9] | [5] [9]), [0-9]) '' $ 'Może. Ale nie znam twojego silnika. Z jakiego języka korzystasz? – FrankieTheKneeMan
Czy na pewno '' 'jest takie samo jak' '? – Brian