2011-08-29 11 views
9

Potrzebuję wyrażeń regularnych, aby dopasować ciągi znaków zawierające litery, cyfry, spacje i niektóre proste znaki interpunkcyjne (.,!"'/$). Mam ^[A-Za-z0-9 _]*[A-Za-z0-9][A-Za-z0-9 _]*$ i działa dobrze dla alfanumerycznych i spacji, ale nie dla interpunkcji. Pomoc jest bardzo cenna.Wyrażenie regularne odpowiadające ciągom znaków alfanumerycznym, spacje i znaki interpunkcyjne

+2

W jakich częściach chcesz dopasować interpunkcja? Co próbujesz? Czy macie również jakieś próbki wejściowe? – Wiseguy

+0

Dlaczego po prostu nie dodasz znaków interpunkcyjnych (zawierających znaki) w nawiasach? – Blazemonger

+0

Cóż, wyrażenie nie ma znaków interpunkcyjnych ... oczywiście nie może działać. Świetne źródło do nauki wyrażeń regularnych: http://www.regular-expressions.info/ –

Odpowiedz

22

Wystarczy dodać znaki interpunkcyjne i inne znaki wewnątrz klas (w nawiasie kwadratowym):

[A-Za-z0-9 _.,!"'/$]* 

Dopasowuje każdy ciąg zawierający spacje, _, alfanumeryczne, przecinki,, ", $ ... płatna Uwaga dodając kilka znaków specjalnych, być może trzeba je uciec: more info here

+0

Jak dopasować to do .test()? – ac360

+0

Masz na myśli to (przed nami JavaScript)? var rgx =/[A-Za-z0-9 _.,! "'/ $] * /; rgx.test (" testme "); Lub coś takiego:/[A-Za-z0-9 _., ! "'/ $] * /. test (" testme ") – CaNNaDaRk

+0

Właśnie wypróbowałem ten var r =/[A-Za-z0-9 _.,!"'/$] */ r.test (' ¬¬ '); zwraca prawdę? Czy brakuje mi czegoś – user2330270

1

Zakładając z regex, że co najmniej jeden znak alfanumeryczny muszą być obecne w łańcuchu, to sugeruję następujące:

/^(?=.*[A-Z0-9])[\w.,!"'\/$ ]+$/i 

Zakładka: wczytanie (?=.*[A-Z0-9]) sprawdza obecność jednej litery lub cyfry ASCII; klasa znaków gniazda zawiera wszystkie alfanumeryczne znaki ASCII, w tym podkreślenie (\w) i pozostałe znaki interpunkcyjne, o których wspomniałeś. Ukośnik musi zostać zmieniony, ponieważ jest również używany jako ogranicznik regex. Modyfikator /i powoduje, że regex jest niewrażliwy na wielkość liter.

1
<script type="text/javascript"> 
check("hello dfdf asdjfnbusaobfdoad fsdihfishadio fhsdhf iohdhf"); 
function check(data){ 
var patren=/^[A-Za-z0-9\s]+$/; 
    if(!(patren.test(data))) { 
     alert('Input is not alphanumeric');  
     return false; 
    } 
    alert(data + " is good"); 
} 
</script> 
Powiązane problemy