正则表达式在某个大小写时不匹配

时间:2014-06-18 12:13:14

标签: javascript regex

我正在寻找一个正则表达式(在JS中,但我不认为这很重要),它匹配某个字符串的所有大写/小写可能性但只有一个。

示例:让我的字符串为" aBc"。然后我的正则表达式应该匹配如下

var regex=/ABC|ABc|AbC|Abc|aBC|abC|abc/g;

在这种情况下,可以将其拼写出来但通常带有n个字符的字符串允许2 ^ n-1个字符串匹配。对于大n来说,这已经不再适合了。因此,我寻找另一种方式。

编辑:由于你们中的许多人似乎没有明白我的观点:正则表达式必须与#34; aBc"不匹配。所以它就像/ abc / i而不是/ aBc /.

为简单起见,您可以检查表达式是否完成了它应该在此处执行的操作:http://regex101.com/r/kP5aX2

你的正则表达式应该与我的完全匹配。

5 个答案:

答案 0 :(得分:4)

尝试

var regex = /(?!aBc)[a-cA-C]{3}/g;

(?!aBc)是一个所谓的负向前瞻,应该可以实现你想要的技巧。

<强>更新

参考评论......

var regex = /((?![a-zA-Z]*aBc[a-zA-Z]*)[a-zA-Z]*[aA][bB][cC][a-zA-Z]*)/g;

更新2

如果你不想匹配整个单词,但只有3个字符的字符串,你应该这样做

var regex = /(?!aBc)[aA][bB][cC]/g; 

请参阅http://regex101.com/r/jQ3hS8

答案 1 :(得分:0)

假设您的字符串只是'abc'或'AbC'等,这将有效:

/(?!aBc)[aA][bB][cC]/g

答案 2 :(得分:0)

怎么样:

/\b(?!aBc)(?i)abc\b/

这将匹配abcabC,...除aBc之外的所有字词。

如果您想在单词中匹配abc,请删除单词边界:

/(?!aBc)(?i)abc/

答案 3 :(得分:0)

由于喷嘴,我找到了一个非常好的解决方案:

var regex=/(?!aBc)(?i)aBc/g;

我非常喜欢这个解决方案,因为代替“aBc”你可以插入任何其他字符串(你只需要做两次,因为字符串在正则表达式中出现两次)。这是我正在寻找的那种解决方案,因为我需要不同长度的许多不同字符串的表达式。

答案 4 :(得分:0)

匹配abc而不是小型大小的形式 使用这种模式:
(?![a-z][A-Z][a-z])(?i)abc
Demo