我对REGEX很新,所以如果这个问题太容易,我会道歉。我正在使用MySQL,并尝试创建一个比较结果,这将产生如下结果:
前四到六必须匹配,如果是数字 -
'414720'匹配'414720xxxx1234'
'414720'匹配'4147xxxxxx1234'
'414720'匹配'41472 *** abcd'
'414720'匹配'4147'
如果是其他数字,或者小于4
,则不匹配'414720'与'414799xxxx1234'不匹配
'414720'与'414xxxxxxx1234'不匹配
我想也许我可以用像
这样的东西SELECT '414720' REGEXP '4147[^0-9-[2]][^0-9-[0]]*'
但它返回/ * SQL错误(1139):从regexp * /得到错误'无效字符范围',我认为因为MySQL的REGEX不支持类减法。我想我可以生成[^ 1,3-9]的显式负片组,但这似乎很棘手,我觉得我可能错过了一个更简单的答案。任何帮助将不胜感激。感谢。
编辑:上面的x可以代替任何字符,或者可能不存在。添加了第二个匹配示例。
答案 0 :(得分:1)
我不知道它是否更简单,但您可以使用:
4147($|\D|2($|\D|0)).*$
如http://rubular.com/r/ehDtDaULZe所示。如果第五个字符不是数字,我不确定第六个字符有什么限制,如果有的话。