2011-07-29 34 views
5

tôi có thể tìm kiếm một chuỗi sử dụng str.search("me");str.search("=");Javascript str.search ("?") Trả về lượng hóa bất ngờ lỗi

Nhưng khi tôi serach cho str.search("?");

tôi nhận được lỗi Unexpected Quantifier.

Tại sao vậy? Tôi làm cách nào để tìm kiếm "?" bằng cách sử dụng một thứ gì đó không phải là cụm từ thông dụng?

Trả lời

6

"?" là một ký tự đặc biệt trong cụm từ thông dụng (một trong các "số lượng") có nghĩa là "khớp với số không trước hoặc một lần". Nó dẫn đến lỗi trong trường hợp này bởi vì nó không có gì trước. Tuy nhiên, "a?" sẽ không ném một ngoại lệ, nhưng sẽ phù hợp với "b" vì vậy đây là một điều quan trọng để tìm cho ra.

Nếu sử dụng String.search, biểu thức chính quy (như karim79 chỉ ra, đó không phải là cách duy nhất), hãy sử dụng "[?]" hoặc "\\?" hoặc /\?/. Các biểu mẫu này sẽ ngăn chặn "?" được coi là một cấu trúc biểu thức chính quy đặc biệt.

Mã hóa vui vẻ.

1

Hãy thử điều này:

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

Đó là lượng hóa và bạn không thể trực tiếp sử dụng nó. Từ javascriptkit.com

? viết tắt của {0,1}. So khớp không hoặc một lần.

MSDN

? Đối sánh với ký tự trước hoặc biểu thức con số 0 hoặc thời gian. Ví dụ: 'do (es)?' khớp với "do" trong "do" hoặc "does". ? là tương đương với {0,1}

này là việc sử dụng đúng:

str.search("\\?") 
Các vấn đề liên quan