2012-04-11 59 views
3

我是新來的正則表達式,似乎無法找出我怎麼也得解決這個問題:正則表達式是隻刪除第一個「/」

我需要一個正則表達式是「允許」只numbersletters/。我寫了這個:

/[^a-zA-Z0-9/]/g

我認爲這是可能剝離第一/過,但不知道怎麼辦。

所以#/register/step1成爲register/step1

誰知道我怎麼會得到這樣的結果?

謝謝!

+3

你嘗試剝離'g'呢? – alf 2012-04-11 17:03:24

回答

2

可以使用非全局的比賽非常重要,如果模式是字符串中連續:

var rx=/(([a-zA-Z0-9]+\/*)+)/; 

var s='#/register/step1'; 

var s1=(s.match(rx) || [])[0]; 


alert(s1)>>> returned value: (String) "register/step1" 
+0

感謝!奇蹟般有效! – Ronald 2012-04-11 17:23:06

0

編輯:不知道爲什麼,我不建議這個第一,但如果你只是執行的模式,而不是替換,你可以只是替換斜槓(如果存在)檢查模式之前,使用strpos (),SUBSTR(),或者類似的東西。如果你正在使用的preg_replace()已經,那麼你應該看看在功能上文檔的例子,他們是

0
"/register/step1".match(/[a-zA-Z0-9][a-zA-Z0-9/]*/); // ["register/step1"] 

\ w是等價於[^ A-ZA-Z0-9 _],所以:

"/register/step1".match(/\w[\w/]*/); // ["register/step1"]