2011-07-29 8 views

Odpowiedz

6

"?" jest specjalnym znakiem w wyrażeniu regularnym (jednym z "kwantyfikatorów"), co oznacza "dopasuj poprzednie zero lub jeden raz". Prowadzi to do błędu w tym przypadku, ponieważ poprzedziło go nic. Jednak "a?" nie wyrzuciłoby wyjątku, ale pasowałoby do "b", więc jest to ważna rzecz, na którą należy zwrócić uwagę.

przypadku korzystania String.search, która przyjmuje wyrażenie regularne (jak karim79 zwraca uwagę, że nie jest to jedyna droga), użyj "[?]" lub "\\?" lub /\?/. Te formularze zapobiegną "?" od bycia traktowanym jako specjalny konstrukt wyrażeń regularnych.

Szczęśliwe kodowanie.

1

Spróbuj tego:

alert(str.search("\\?")); 
1

Jest kwantyfikator i `t bezpośrednio z niego korzystać. Od javascriptkit.com

? jest skrótem od {0,1}. Pasuje zero lub jeden raz.

i MSDN

? Pasuje do poprzedniego znaku lub podwyrażenia zero lub jeden czas . Na przykład "wykonaj (s)?" pasuje do "do" w "do" lub "does". ? jest równoważne {0,1}

to jest właściwe użycie:

str.search("\\?")