/^(((\d{2}((0[13578]|1[02])(0[1-9]|[12]\d|3[01])|(0[13456789]|1[012])(0[1-9]|[12]\d|30)|02(0[1-9]|1\d|2[0-8])))|([02468][048]|[13579][26])0229))(( |-)(\d{4})( |-)(\d{3})|(\d{7}))$/
我有上面的正则表达式。它正确检查所有事情,除了我的13位数字的第11位我正在验证我希望它只接受0或1.我不确定在这个表达式中我应该把我的[0-1]放在哪里。
例如:鉴于8001015009 0 87。这个数字是有效的,但如果我将第11位的0改为任何不是0或1的数字,那么这个数字将无效
答案 0 :(得分:0)
只需使用类似此(?=.{10}[01])(?=.{12}[01])
的预测即可预见并验证第11和第13个字符是0
还是1
。
^(?=.{10}[01])(?=.{12}[01])(((\d{2}((0[13578]|1[02])(0[1-9]|[12]\d|3[01])|(0[13456789]|1[012])(0[1-9]|[12]\d|30)|02(0[1-9]|1\d|2[0-8])))|([02468][048]|[13579][26])0229))(( |-)(\d{4})( |-)(\d{3})|(\d{7}))$
答案 1 :(得分:-1)
我的错误是13.虽然它应该是一个位置,但它是一个数字。校正...
^(\d{10}[10])\d+