MySQL REGEXP语句在不应该返回时返回true?

时间:2012-10-09 05:02:18

标签: mysql regex

SELECT 
'8 / 10 Valle Seti'
REGEXP
'([1-9][0-9]|[2-9][0-9]) (Valle Seti)'

这在mysql中返回1。怎么可能?我只指定两个大于10的数字,后跟一个单词,但这匹配一个数字,后跟斜杠,然后是两位数字。我在这里错过了什么吗?

2 个答案:

答案 0 :(得分:3)

你的正则表达式匹配

'10 Valle Seti'

'8 / 10 Valle Seti'

要强制正则表达式在字符串结束处开始和结束,请将其更改为

REGEXP
'^([1-9][0-9]|[2-9][0-9]) (Valle Seti)$'

答案 1 :(得分:2)

因为它在字符串上找到匹配项(10 Valle Seti ),请尝试添加断言beginningend字符

SELECT 
'8 / 10 Valle Seti'
REGEXP
'(^[1-9][0-9]|[2-9][0-9]) (Valle Seti)$'

请参阅SQLFiddle Demo