Wymaga wyrażenia regularnego, aby dopasować trzy ciągi znaków


Zwykle trzymam się z daleka od
wyrażeń regularnych
, ponieważ rzadko znajduję dla nich dobre zastosowanie. Ale w tym przypadku myślę, że nie mam wyboru.
Potrzebuję wyrażenia regularnego dla następującej sytuacji. Przyjrzę się trzem liniom znaków. Będzie pasować, jeśli pierwszy znak to
1-9 lub litery o, n, d (małe lub duże)
AND, drugi znak to
1, 2 lub 3
, a trzeci to
0-9
.
Czy ktoś może mi pomóc?
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Niewielka zmiana w kilku innych odpowiedziach. Ogranicz wprowadzane dane do dokładnie pasującego tekstu.
^[1-9ondOND][123][0-9]$
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

[1-9ondOND][123][0-9]

Pominąłem
^
i
$
(znaczniki początku i końca linii), ponieważ powiedziałeś, że będziesz mieć 3 ciągi znaków, ale nie ma nic złego w ich dołączeniu i mogą poprawić prędkość , choć przy tak krótkim wejściu nie będzie to miało większego znaczenia.
Oczywiście przy założeniu, że pracujesz w języku i lokalizacji, w których odpowiedniki pisane wielkimi literami
o
,
n
i
d
to
O
,
N
i
D
. Jeśli nie, musisz powiedzieć swojemu tłumaczowi wyrażeń regularnych, aby ignorował wielkość liter. Mechanizm zależy od języka/struktury.
W przypadku Pythona użyłbyś czegoś takiego:
re.match('[1-9ond][123][0-9]', inputstring, re.IGNORECASE)

Re.Match
powoduje zbieg okoliczności na początku linii, więc nie potrzebujesz
^
.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Perl RegEx:
/^[1-9ondOND][1-3][0-9]$/
^ na początku linii;
$
na końcu wiersza.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

[1-9ond][123][0-9]

Oto przydatne miejsce do sprawdzenia wyrażenia regularnego.
http://web.archive.org/web/201 ... work/
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Bardzo późna odpowiedź, ale mam nadzieję, że to pomoże
([1-9]|(?i)(o|n|d))[123][\d]

http://regex101.com/r/vE2jT1/1
http://regex101.com/r/vE2jT1/1
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

W systemie opartym na PREG (obecnie większość z nich):
^(?:[1-9]|[ond])[1-3][0-9]$

Niektóre systemy wymagają znaczników początku/końca (np. PHP, Perl, ale nie .NET), jeśli twój system to zrobił, otrzymałeś coś takiego:
/^(?:[1-9]|[ond])[1-3][0-9]$/

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się