正则表达式-两个字符如何匹配(MySql)

正则表达式-两个字符如何匹配(MySql),mysql,regex,Mysql,Regex,请在下面找到我的问题 SELECT * FROM demoTable WHERE C_APPLICATION_REF_NO REGEXP '[A-Z]{1}[0-9]{0,14}'; 为什么我得到的结果有两个字符,而我只匹配一个字符,其他的是数字 如何修改我的正则表达式,使我只能提取一个字符,而其他字符是数字。原因是正则表达式没有锚定到字符串的开始/结束,因此也会返回部分匹配项 使用 {1}是多余的。此查询应该可以工作 SELECT * FROM demoTable WHERE C_APPL

请在下面找到我的问题

SELECT * FROM demoTable WHERE C_APPLICATION_REF_NO REGEXP '[A-Z]{1}[0-9]{0,14}';
为什么我得到的结果有两个字符,而我只匹配一个字符,其他的是数字


如何修改我的正则表达式,使我只能提取一个字符,而其他字符是数字。

原因是正则表达式没有锚定到字符串的开始/结束,因此也会返回部分匹配项

使用


{1}
是多余的。

此查询应该可以工作

SELECT * FROM demoTable WHERE C_APPLICATION_REF_NO REGEXP '^[A-Z]{1}[0-9]{0,14}$';
这有助于您:

 var patt =/^[A-Z]{1,}[0-9]{0,14}$/g;


您可以匹配所有记录,其中一个字符后跟0到14个数字。但是你从来没有说过贝弗这个角色不应该是我尝试过的另一个角色。[A-Z][0-9]{0,14}。无论如何,我知道原因了。如果我从正则表达式中删除end($),它将再次匹配两个字符。有什么原因吗?这一次看起来没什么问题。就像只以一个字符开头一样,下一个字符是数字@Wiktor StribiżewThe
$
是字符串锚点的结尾,如果删除它,模式将在
AB
中找到匹配的
a
,因为
[0-9]{0,14}
允许匹配空字符串(零位)。你必须在这里使用锚。当然,这正是我在回答中所建议的。
 var patt =/^[A-Z]{1,}[0-9]{0,14}$/g;
 var patt =/^[A-Z][0-9]{0,14}$/g;