2017-09-15 45 views
7

Mam wyrażenie regularne, aby zwrócić false, jeśli znaleziono znaki specjalne. Próbuję zmodyfikować to, aby zrobić to samo, jeśli znaleziono pojedyncze lub podwójne cudzysłowy. To jest jeden raz, że regexr.com nie pomaga.Wyrażenie regularne javascript do znalezienia pojedynczego lub podwójnego cudzysłowu nie działa

Oto moja ekspresja, że ​​pracuje dla znaków specjalnych:

^(?=.*?[A-Z]{2})((?!!|@|$|%|\^|&|\*)).)*$ 

Oto moje wyrażenie regularne dla pojedynczych i podwójnych cudzysłowach:

^(?=.*?[A-Z]{2})((?!'|").)*$ 

Próbowałem nawet uciekając im:

^(?=.*?[A-Z]{2})((?!\'|\").)*$ 

Proszę o pomoc! Zmarnowałem za dużo czasu i nie mogę tego szybko rozgryźć.

Mam metodę:

var isValidText = function (val) { 
    var rx = new RegExp(\^(?=.*?[A-Z]{2})((?!!|@|$|%||^|&||*)).)*$\); 
    var result = rx.text(val); 
    return result; 
} 

Proste wejściowy:

Mamy imprezę i mojego domu w ten weekend. Przynieś ze sobą jak najwięcej przyjaciół ; im wiecej tym lepiej.

Ten akapit powinien być nieważny, gdy tylko znajdzie pojedynczy cytat w We's.

+0

Niestety, w jaki sposób pierwszą pracę regex? – revo

+1

Pierwsza z nich nie jest poprawnym wyrażeniem regularnym i dlaczego '[^" '] 'nie działa dla ciebie? –

+3

Czy możesz wyjaśnić, dlaczego używasz poprzedniej strony? Z tego, co napisałeś, powinno być tak proste, jak'/"|" /. test (str) ', czego mi brakuje? –

Odpowiedz

6

Nie trzeba tu szukać, a ponieważ dopasowujesz tylko pojedyncze znaki, możesz po prostu użyć zestawu znaków zamiast |.

.*[[email protected]$%^&*'"].*

+0

Działa to świetnie! Ale muszę wspomnieć, że komentarz Alexa Blexa również zadziałał, gdy usunąłem ^. Dziękuję Ci. – Patricia