Mam regex, które teraz pozwala tylko małe litery, muszę taki, który wymaga zarówno małe jak i duże litery:potrzebują JavaScript Regex wymagającego górne lub małe litery
/(?=.*[a-z])/
Mam regex, które teraz pozwala tylko małe litery, muszę taki, który wymaga zarówno małe jak i duże litery:potrzebują JavaScript Regex wymagającego górne lub małe litery
/(?=.*[a-z])/
Spróbuj /(?=.*[a-z])/i
Note na końcu to czyni wielkość liter nieodczuwalną.
lub dodać wielką gamę do regex:
/(?=.*[a-zA-Z])/
To nie jest sposób, w jaki dopasowuje się wielkie litery. Lub też małe litery, jeśli o to chodzi. To okropne podejście z lat sześćdziesiątych. Jest co najmniej 20 lat przestarzały i nie ma miejsca w nowoczesnym przetwarzaniu tekstu. – tchrist
@tchrist - ładny, 1960, 20 lat, świetnie. Wyjaśnienie proszę? Uprzejmie pomóż mi poprawić moje wyrazy regularne. – karim79
7-bitowy ASCII pojawił się w latach 60-tych. Unicode ma teraz 20 lat, a kody ISO 8859 są jeszcze starsze. ASCII jest zbyt oldschoolowym, by służyć dzisiejszemu światu. Sieć to * nie * ASCII! – tchrist
Nie wiem, czy chodziło Ci pisane małymi lub małymi literami oraz ściśle ściśle wielkie.
Oto wersja mieszanych przypadek:
/^[a-zA-Z]+$/
A ściśle jeden-or-the-inna wersja:
/^([a-z]+|[A-Z]+)$/
Mam wyrażenie regularne, które obecnie pozwala tylko na małe litery, potrzebuję takiego, który wymaga małych lub wielkich liter:
/(?=.*[a-z])/
Niestety, jest to utterly impossible to do this correctly using Javascript! Przeczytaj this flavor comparison’s ECMA column dla wszystkich tego, co JavaScript nie może zrobić zrobić.
Właściwa wzorzec dla małych liter jest standard Unicode pochodzące własności binarnego \p{Lowercase}
oraz właściwego wzór wielkimi literami podobnie \p{Uppercase}
. Są to właściwości normatywne, które czasami zawierają w sobie nie-litery w pewnych egzotycznych okolicznościach.
Używając tylko właściwości ogólnej kategorii, możesz mieć \p{Ll}
dla Lowercase_Letter, \p{Lu}
dla Uppercase Letter i \p{Lt}
dla letter titlemase. Pamiętaj, że są to trzy przypadki w Unicode, a nie dwa). Istnieje standardowy alias \p{LC}
, co oznacza [\p{Lu}\p{Lt}\p{Ll}]
.
Jeśli chcesz otrzymać literę niż jest , nie małą literą, możesz użyć . Napisany w longhandzie to (?=\P{Lowercase_Letter})\p{Letter}
. Ponownie, te miksują niektóre z innych punktów kodu kodu innej_wersji, które rozpoznaje \p{Lowercase}
. Muszę jeszcze raz podkreślić, że własność Smallcase jest nadzbiorem właściwości Lowercase_Letter.
Zapamiętaj poprzedni akapit, zamień w górnym miejscu, gdziekolwiek napisałem niżej, a otrzymasz to samo dla stolic.
Ponieważ dostęp do tych zasadniczych właściwości jest minimalny poziom krytyczny funkcjonalność niezbędną dla Unicode regular expressions, niektóre wersje JavaScript je realizować tylko w ten sposób napisałem je powyżej.Jednak standard JavaScript wciąż ich nie wymaga, więc nie można na nich na ogół liczyć. Oznacza to, że nie jest to możliwe poprawnie pod wszystkimi implementacjami Javascript.
Języki, w których możliwe jest to, co chcesz zrobić minimalnie obejmują:
z wymienionych Bove, tylko ostatnia linia jest - ICU i Perl - ściśle i całkowicie spełniają wszystkie Level 1 wymogi zgodności (plus pewne poziomy 2 i 3) do właściwego obchodzenia się z Unicode w regexes. Jednak wszystkie te, które wymieniłem w punktach poprzedniego akapitu, z łatwością poradzą sobie z większością i prawdopodobnie wszystkim, czego potrzebujesz.
Jednak JavaScript nie należy do takich. Twoja wersja może jednak, jeśli masz dużo szczęścia i nigdy nie będziesz musiał uruchamiać na platformie JavaScript w wersji standardowej.
Tak bardzo smutno, naprawdę nie można użyć regexes JavaScript dla Unicode pracy, chyba że masz niestandardowego rozszerzenia. Niektórzy tak, ale większość nie. Jeśli tego nie zrobisz, być może będziesz musiał użyć innej platformy, dopóki odpowiedni standard ECMA nie zacznie działać w XXI wieku (Unicode 3.1 pojawił się dekadę temu !!).
Jeśli ktoś wie biblioteki JavaScript, który implementuje poziomie 1 wymagania UTS#18 on Unicode Regular Expressions tym zarówno RL1.2 “Properties” i RL1.2a “Annex C: Compatibility Properties”, proszę gongu w.
Powinienem wiedzieć, że napiszesz traktat. :-) Moja jedyna odpowiedź jest taka, że nic nie wskazuje na to, że OP dba o Unicode lub i18n. :-) –
i18n nie ma znaczenia. Przyjmij wszystkie domyślne 7-bitowe kody błędów, chyba że udowodniono, że jest inaczej. Witamy w ciągu ostatnich 20 lat! – tchrist
* wzruszając ramionami * Wystarczająco dobre. Nie przesłałem ci tego, przy okazji. –
Czy zdajesz sobie sprawę, że to wyrażenie regularne jest równoważne '/ [AZ] /' i dopasowuje każdy ciąg zawierający co najmniej jedną małą literę? – delnan
Co to jest użycie nawiasów, jeśli zamierzasz odrzucić (?? = ') Przechwytywanie? – Martijn
@Martjin: Parens są wymagane do wyprzedzania (i wielu innych rzeczy) i nie grupują się. – delnan