2012-08-02 47 views
0

用正則表達式玩弄從字符串正則表達式把所有號碼從JavaScript中的字符串和PHP

刪除所有數字,我想出了這個:

/([^0-9])$/ 

但它只能如果字符串看起來像這樣,例如Name123但如果你輸入Name123Name比它不工作?

不明白爲什麼?

任何想法?

最好的問候, 伊利亞

+1

這是幹什麼用的?幾乎肯定有更好的方法來做你想做的事情,但很難說不知道你正在使用哪種語言。 – 2012-08-02 14:43:25

+0

我使用JavaScript和jQuery作爲用戶端和我用PHP做的相同的事情。以下是我如何將它應用於用戶端:var a = city.val(); var filter = /([^ \ d])/; if(filter.test(a)){do something} – 2012-08-02 15:00:08

+0

不是你的邏輯倒退了嗎?您正在測試它是否至少包含一個非數字。但它仍然可以包含數字。什麼是「做某事」?是應該產生錯誤信息的代碼,還是應該在沒有錯誤時運行的代碼? – 2012-08-02 15:19:41

回答

4

你的正則表達式查找一個字符不是[0-9]在字符串的結束。

要檢查是否有字符串中的數字的任何地方,卸下主播:

/[0-9]/ 

要檢查所有的字符不是數字,加上字符串錨的開始太:

/^[^0-9]+$/ 

這種方法被稱爲黑名單 - 你想要允許的不要的字符列表。請注意,最好創建一個白名單 - 您要做的想要允許的列表字符。

+0

甜!工作正常!非常感謝Mark! ;) – 2012-08-02 15:26:28

1

最後刪除$,因爲它匹配字符串的末尾。根據您使用的語言,您也可以使用\d來匹配數字而不是[0-9]

所以在你的例子/[0-9]$/匹配Name123,因爲123出現在字符串的末尾,因此匹配$錨。但在另一個示例中,Name123Name,$錨點不匹配,因爲數字位於字符串的中間。

+0

有趣,但我試過了,它不起作用。下面是我如何應用它:var a = city.val(); var filter = /([^ \ d])/; if(filter.test(a)){do something} – 2012-08-02 14:47:15

+0

啊,javascript ...我更像是一個perl人。不適合詢問javascript的人 – 2012-08-02 14:51:01

相關問題