正则表达式 - 如何匹配没有特定前缀的东西?

时间:2015-08-11 12:53:22

标签: regex

我有以下模式:

   .submenu_panel {
    width: 100%;
    height: 100%;
    background: gray;
    height:0px;
    overflow: hidden;
    transition: all 0.2s ease-in-out;
}

它必须符合以下情况:

[a-z]{1,2}-\d{1,2}

忽略这些:

A-1
B-1

因此,当后缀为A-1-1-1 A-1-1 时忽略。

5 个答案:

答案 0 :(得分:4)

您可以使用锚点(如果字符串是分开的)或前瞻:

^[a-z]{1,2}-\d{1,2}$

请参阅demo

具有预见的版本:

\b[a-z]{1,2}-\d{1,2}(?!-)\b

另一个demo

注意使用i修饰符,否则[a-z]将不匹配大写字母。它也可以作为(?i)内联选项添加:(?i)\b[a-z]{1,2}-\d{1,2}(?!-)\b在大多数正则表达式中。

答案 1 :(得分:1)

您可以使用前瞻:

\b[A-Za-z]{1,2}-\d{1,2}(?!-)

RegEx Demo

如果这些是每行唯一的字符串,那么您也可以使用锚点^$

^[A-Za-z]{1,2}-\d{1,2}$

答案 2 :(得分:1)

你的正则表达式已经匹配你想要的,只需添加不区分大小写(i - 选项)和锚点。

ALTER TABLE agreement MODIFY COLUMN id_two INT NOT NULL,
 ADD CONSTRAINT id_FK2
 FOREIGN KEY(id_two)
 REFERENCES user(id); 

答案 3 :(得分:0)

如果我理解你的问题,那么最好用$

来固定正则表达式
(?im)[a-z]{1,2}-\d{1,2}$

答案 4 :(得分:0)

你可以像这样使用



^[a-z]{1,2}-\d{1,2}$