Zastanawiałem się, czy uda mi się uzyskać wyrażenie regularne, które będzie pasowało do łańcucha zawierającego tylko znaki alfabetu i tylko to.
à
znak alfabetu odpowiada Twojej definicji? Jakiego języka używasz?
Zastanawiałem się, czy uda mi się uzyskać wyrażenie regularne, które będzie pasowało do łańcucha zawierającego tylko znaki alfabetu i tylko to.
à
znak alfabetu odpowiada Twojej definicji? Jakiego języka używasz?
Odpowiedzi:
Możesz użyć dowolnego z tych 2 wariantów:
/^[A-Z]+$/i
/^[A-Za-z]+$/
aby dopasować wejściowy ciąg alfabetów ASCII.
[A-Za-z]
dopasuje wszystkie alfabety (zarówno małe, jak i duże).^
i $
upewni się, że nic poza tymi alfabetami nie zostanie dopasowane.Kod:
preg_match('/^[A-Z]+$/i', "abcAbc^Xyz", $m);
var_dump($m);
Wynik:
array(0) {
}
Przypadek testowy dotyczy komentarza OP, który chce dopasować tylko wtedy, gdy w danych wejściowych występuje 1 lub więcej alfabetów. Jak widać w przypadku testowym, dopasowanie nie powiodło się, ponieważ znajdował się ^
w ciągu wejściowym abcAbc^Xyz
.
Uwaga: należy pamiętać, że powyższa odpowiedź jest zgodna tylko z alfabetami ASCII i nie obejmuje znaków Unicode. Jeśli chcesz dopasować litery Unicode, użyj:
/^\p{L}+$/u
Tutaj \p{L}
pasuje do każdego rodzaju listu z dowolnego języka
\w is shorthand for A-Za-z
- nie bardzo, \w
jest skrótem od[a-zA-Z0-9_]
Jeśli potrzebujesz dołączyć znaki alfabetu spoza ASCII, a Twój typ wyrażenia regularnego obsługuje Unicode, to
\A\pL+\z
byłoby poprawnym wyrażeniem regularnym.
Niektóre aparaty regex nie obsługują tej składni Unicode, ale pozwalają \w
skrótom alfanumerycznym na dopasowanie również znaków spoza ASCII. W takim przypadku możesz uzyskać wszystkie alfabety, odejmując cyfry i podkreślenia w \w
ten sposób:
\A[^\W\d_]+\z
\A
dopasowuje na początku łańcucha, \z
na końcu łańcucha ( ^
a $
także dopasowuje na początku / końcu linii w niektórych językach, takich jak Ruby, lub jeśli są ustawione określone opcje wyrażeń regularnych).
Dopasuje jeden lub więcej znaków alfabetu:
/^[a-z]+$/
Możesz sprawić, by wielkość liter nie była rozróżniana, używając:
/^[a-z]+$/i
lub:
/^[a-zA-Z]+$/
W Ruby i innych językach, które obsługują klasy znaków POSIX w wyrażeniach nawiasów, możesz po prostu:
/\A[[:alpha:]]+\z/i
Spowoduje to dopasowanie znaków alfa we wszystkich językach alfabetu Unicode. Bułka z masłem.
Więcej informacji: http://en.wikipedia.org/wiki/Regular_expression#Character_classes http://ruby-doc.org/core-2.0/Regexp.html
[^[:alpha]]
.
[a-zA-Z]
powinien zrobić to dobrze.
Możesz odwołać się do ściągawki .