Potrzebuję wyrażenia regularnego JS, które powinno pozwolić tylko na słowo o alfanumerycznym, kropce i łączniku.

Daj mi znać, że jest to poprawne.

var regex =  /^[a-zA-Z_0-9/.-]+$/;
1
user1213664 30 wrzesień 2012, 08:58

2 odpowiedzi

Najlepsza odpowiedź

Prawie. Pozwoli to również podkreślenia i ukośniki. Usuń te z zakresu:

var regex =  /^[a-zA-Z0-9.-]+$/;

Spowoduje to również dopasowanie pustego łańcucha. To może być tym, czego chcesz, ale może też nie być tym, czego chcesz. Jeśli nie jest to, co chcesz, zmień + do *.

3
icktoofay 30 wrzesień 2012, 05:00

Pierwsze uproszczenia, które dokonali, aby użyć "znaku słów" Shorthand "W", który jest mniej więcej taki sam jak "A-ZA-Z", ale krótszy, a automagicznie pozostaje poprawny, gdy przeniesiesz się na inne języki, które obejmują Niektóre akcentowane znaki alfabetyczne i "znak cyfrowy" Shorthand "d".

Również, chociaż Dot jest wyjątkowy w większości miejsc w wyrażeniach regularnych, to nie specjalne wsporniki kwadratowe i nie powinny być tam cytowane. (Poza tym postać z cytatem pojedynczej postaci jest z powrotem -Slash, nie do przodu. Ten naprzód twojej w twoich wspornikach jest taką samą postacią, która zaczyna się i kończy ponownie, a więc prawdopodobnie jest prawdopodobne Przedwcześnie zakończyć RE, więc spowodować błąd analiza!

A jak zauważyłeś, łącznik ma szczególne znaczenie "zasięgu" wsporników wewnątrz (np. A-Z), więc jeśli chcesz dosłownie Musisz zrobić coś trochę innego. Zgodnie z konwencją, że coś jest umieszczenie dosłownego łącznika pierwszy w nawiasach.

Więc mój wynik byłby var regex = /^[-.\w\d]+$/;

(Jak pewnie zauważyłeś, jest prawie zawsze więcej niż jeden sposób, aby wyrazić wyrażenie regularne, więc działa, a ponowne umiejętności spędzają jak najwięcej czasu na) ekonomię ekspresji i b) wydajności w czasie wykonywania, gdy robią to "poprawny". Innymi słowy, możesz zignorować wiele z tego, co właśnie powiedziałem, ponieważ tak naprawdę nie ma znaczenia. Myślę, że wszystko, co naprawdę się liczy, jest), pozbycie się tego obcych slash i b) przeniesienie dosłownego łącznika do pierwszej postaci w nawiasach kwadratowych.)

(Kolejna myśl: Bardzo często przy akceptowaniu znaków alfabetowych i myślników, podkreśla jest też akceptowalny ... Czy naprawdę masz na myśli, że przetestuje to podkreślenie?)

(Jednak inna myśl: Czasami pierwszy znak identyfikatora musi być alfem, w którym to przypadku, co prawdopodobnie chcesz, to var regex = /^\w[-.\w\d]*$/; Możesz chcieć innej reguły dla pierwszego znaku Każdy przypadek, jak naiwny przepis powyżej pozwoliłby "-" i "." jako uzasadnione słowa długości.)

1
Chuck Kollars 1 październik 2012, 05:24