2014-10-16 37 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]*[[:>:]]