2013-05-02 36 views
2

如果這看起來像一個愚蠢的問題,我表示歉意,但是如何搜索一個字符串以查看它是否包含句點?我嘗試過搜索:檢測一個字符串中是否存在句點

var p="This is text without a period, What now?" 

alert(p.search(".")); 

我的印象是它應該返回-1,因爲這句話沒有句號。然而,它總是返回0.

我錯過了什麼嗎?

+2

僅供參考,該'search'方法是正則表達式搜索,而不是一個字符匹配。在正則表達式中,'.'匹配*任何*字符,包括第一個「T」。 – 2013-05-02 15:02:37

+0

啊,這就解釋了!感謝那。 – user1470118 2013-05-02 15:03:46

回答

11

有很多方法可以做到這一點,我可能會使用indexOf()只是爲了看看一個字符的字符串存在:

alert(p.indexOf(".") != -1); // true or false 

根據MDN,search()「執行的正則表達式之間的匹配搜索。而這個String對象「,所以這將是:

alert(p.search(/\./)); 

這將使你-1和週期具有特殊意義的正則表達式,必須逃脫。字符串的這個

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/indexOf

+0

太好了。謝謝。我忘記了indexOf功能...一旦他們讓我......我會標記它正確... – user1470118 2013-05-02 15:01:45

+0

@Yatrix它快速上升,因爲有7個人打字相同的答案,他只是提交最快的。 :) – 2013-05-02 15:04:24

+0

@KevinB仍然讓我瘋狂嫉妒! – Yatrix 2013-05-02 15:06:43

0

使用indexOf()方法。爲了避免JavaScript Regex中的點,你需要將它「投射」到一個字符類。這是通過[]完成的。

alert(p.search("[.]")); 

Working fiddle

2

如果你想堅持到正則表達式,你需要躲避.,因爲它是一個特殊的正則表達式字符

相關問題