Czy àznak alfabetu odpowiada Twojej definicji? Jakiego języka używasz?
Tim Pietzcker
2
czy powinien pasować pusty ciąg?
ysth
nie, pusty ciąg nie powinien pasować
Steffan Harris
Jedna ważna uwaga: nie poleciłeś języka ani narzędzia, w którym chcesz użyć wyrażenia regularnego, o które prosisz. Chociaż zasady wyrażeń regularnych są ogólnie takie same, składnia nie jest wszędzie jednakowa. Powinieneś odnieść się, gdzie chcesz go użyć.
sergiol
Odpowiedzi:
186
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.
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 niektórych dialektach [Az] będzie pasować do wartości interpunkcyjnych ASCII występujących między 'Z' i 'a', w szczególności '[', '\', ']', '^', '-' i '`', jak a także od „A” do „Z” i od „a” do „z”.
Lee
Tak naprawdę chciałem dopasować mój ciąg tylko wtedy, gdy ma znaki alfabetu, jeśli ma znak niealfabetyczny, nie powinien pasować.
Steffan Harris
7
@Lee: Nie niektóre. Wszyscy. To wyrażenie regularne jest nieprawidłowe w obecnym stanie.
Tim Pietzcker
7
\w is shorthand for A-Za-z- nie bardzo, \wjest skrótem od[a-zA-Z0-9_]
anubhava
1
Słuszna uwaga @ jpmc26. Zmieniłem odpowiedź, aby usunąć pierwotny błąd.
anubhava,
55
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ą \wskró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 \wten sposób:
\A[^\W\d_]+\z
\Adopasowuje na początku łańcucha, \zna 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).
+1 za nie traktowanie alfabetu angielskiego jako jedynego alfabetu
srcspider
7
+1, tak samo jak powyżej. angielski nie jest jedynym alfabetem i wiele osób pisze swoje imię używając znaków innych niż ASCII, aby poprawnie je wyrazić.
Ben Barkay
22
Dopasuje jeden lub więcej znaków alfabetu:
/^[a-z]+$/
Możesz sprawić, by wielkość liter nie była rozróżniana, używając:
à
znak alfabetu odpowiada Twojej definicji? Jakiego języka używasz?Odpowiedzi:
Możesz użyć dowolnego z tych 2 wariantów:
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:
Wynik:
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ściowymabcAbc^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:
Tutaj
\p{L}
pasuje do każdego rodzaju listu z dowolnego językaźródło
\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
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
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).źródło
Dopasuje jeden lub więcej znaków alfabetu:
Możesz sprawić, by wielkość liter nie była rozróżniana, używając:
lub:
źródło
W Ruby i innych językach, które obsługują klasy znaków POSIX w wyrażeniach nawiasów, możesz po prostu:
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
źródło
[^[:alpha]]
.[a-zA-Z]
powinien zrobić to dobrze.Możesz odwołać się do ściągawki .
źródło