2012-02-01 46 views
0

我非常難過。我正在嘗試使用一些服務器端PHP,並引入一些可以做同樣事情的JavaScript - 在用戶輸入時向用戶提供提示。我有以下幾點,試圖查找所有小寫字母,大寫字母和數字0或更多次;然後刪除那些字符,留下一個包含其他所有內容的字符串。然後我把這個長度與變量maxSymbols相比較,它是5.PHP - > JavaScript RegEx

我無法得到這個評估正確...我在這裏錯過了什麼?

else if(passwordValue.replace(/([a-zA-Z0-9])*/, '').length > maxSymbols){ 

// Check the maximum number of symbols in the password. 
    document.getElementById("passwordHint").innerHTML = "You've used too many symbols, " + maxSymbols + " is the maximum."; 
    document.getElementById("passwordHint").style.color = "red"; 

} 

回答

1

您缺少正則表達式的g修飾符。沒有g,你只能替換第一場比賽。

嘗試if(passwordValue.replace(/([a-zA-Z0-9])*/g, '').length > maxSymbols)

希望這有助於

皮特

+0

這兩個答案都很好,謝謝你們/ gals。這只是證明我有很多要學習語言之間的正則表達式語法。 – patrickn 2012-02-01 17:23:09

+0

這些標誌是JavaScript獨有的嗎?有趣的是,我的PHP正則表達式沒有'g'標誌,就像我打算的那樣工作。 – patrickn 2012-02-01 17:24:57

+0

@patrickn js確實有它自己的js風味。我不知道它與PHP有多接近,但它們會有差異。 – 2012-02-01 17:29:17

0
.replace(/([a-zA-Z0-9])*/, '') 

應該

.replace(/[a-zA-Z0-9]/g, '') 

,你應該是不錯的。 :)你在第一個搜索的是0個或更多的那些字符在一起。你需要的是角色類在全球取代(g)。

+0

有趣的是,我使用作爲參考這兩個頁面不顯示/ g標誌。除非我錯過了它。 – patrickn 2012-02-01 17:20:56

+0

http://www.learn-javascript-tutorial.com/RegularExpressions.cfm http://www.regextester.com/jssyntax.html – patrickn 2012-02-01 17:21:14