2014-10-16 32 views
-2

我正在運行一個mysql程序,其中我的輸入參數是user_id,我想驗證這個user_id要REGEXP字符串不允許0作爲第一個字符,不允許011,意味着任何事情從0開始,這是不允許的

條件是user_id不是從0開始,而是包含0,即101是有效輸入,但011不是有效輸入。

我寫下面的代碼,它允許011作爲有效的代碼。

user_id REGEXP '^-?[^0]$|^[1-9]+[0-9]*$' 

有人能幫我糾正我的上面的代碼嗎?

我想這REGEXP不允許0作爲第一個字符,它不會允許011或01或000,但它允許100或101

回答

1

您可以使用這樣的正則表達式:

^[^0][0-9]*$ 

Regular expression visualization

Debuggex Demo

+0

謝謝,但它不工作,它允許01作爲有效的代碼。 – sam 2014-10-16 11:21:34

+0

請儘快給我解決方案,謝謝 – sam 2014-10-16 11:28:02

+0

正則表達式適合我。添加了一個演示鏈接到我的答案。 – 2014-10-16 11:35:23

0

試試這個。我用單詞邊界錨應該在MySQL的工作,但你的正則表達式的味道可能會有所不同

如果只是排除零作爲第一個字符,但要確保它仍然是一個數字:

[[:<:]][1-9][[:digit:]]*[[:>:]] 

要同時保證在字符串中存在零:

[[:<:]][1-9][0-9]*0*[0-9]*[[:>:]]