2013-10-16 105 views
2

我尝试使用简单的方案验证数字,但在正则表达式中我不太好。RegEx验证号码

数具有以下格式:

XXXXXXX-XX-X其中X09之间的数字。

我试过以下内容:/[0-9]{6}\-[0-9]{2]\-[0-9]{1}/但它不验证。

你看到我做错了吗?

+1

什么语言是正则表达式吗? – zzzzBov

+0

RegEx将在AS3中使用。 –

+1

作为未来的注释,[tag:regex]标签要求添加要使用正则表达式的语言或工具。 – zzzzBov

回答

5

您的模式中存在拼写错误。第三]应该是}

/[0-9]{6}\-[0-9]{2}\-[0-9]{1}/ 

可以简化,虽然这进一步。你不需要逃脱-之外的字符类的,你不需要为{1}量词:

/[0-9]{6}-[0-9]{2}-[0-9]/ 

取决于你所使用的正则表达式引擎,你也许可以代替\d[0-9]。在JavaScript中它们是等价的,但是,在许多引擎中,它们稍有不同。 \d适用于Unicode数字,而非十进制数字(例如,它可能与Easter Arabic digits匹配)。如果这是可以接受的,你可以使用:

/\d{6}-\d\d-\d/ 

另外,如果你需要禁止任何开头或结尾的字符,你可以考虑加入启动(^)和结束($)锚周围的模式:

/^[0-9]{6}-[0-9]{2}-[0-9]$/ 

或者

/^\d{6}-\d\d-\d$/ 
+0

使用'\ d'而不是'[0-9]'进行简化(大多数语言)。 –

+0

@ p.s.w.g:非常感谢。我不能相信我没看到这个错误:今天应该停止工作,谢谢你改进正则表达式! –

+0

@BrianStephens我已经添加了一个替代模式和'\ d'和' [0-9]'。 –