RegEx - 检查字符串是否包含特定字符串失败?

时间:2011-09-16 11:10:09

标签: regex vbscript

abcVIRTUAL123   ^(?!.*VIRTUAL).*$^([a-zA-Z]{3})([a-zA-z0-9]{7})(\d{3})$ FALSE
abcVIRTUAL123   ^([a-zA-Z]{3})([a-zA-z0-9]{7})(\d{3})$                     TRUE
abcLOCATOR123   ^(?!.*VIRTUAL).*$^([a-zA-Z]{3})([a-zA-z0-9]{7})(\d{3})$ FALSE
abcLOCATOR123   ^([a-zA-Z]{3})([a-zA-z0-9]{7})(\d{3})$                     TRUE

您好,我是REGEX的新手,我正在使用Excel中的VBScript库。

在上面的示例中,我想检查字符串是否包含单词'VIRTUAL',如果是,则返回错误匹配。 除了模式的其余部分使字符串有效之外,我认为它几乎全部存在。 它无视我的第一个消极的期待。

我尝试过论坛的各种组合,但我被卡住了。

任何帮助表示感谢。

干杯 NIK

2 个答案:

答案 0 :(得分:1)

你的正则表达式中间有$^,意思是“字符串结束,然后是字符串的开头”。当然,这永远不会匹配。

尝试

^(?!.*VIRTUAL)([a-zA-Z]{3})([a-zA-z0-9]{7})(\d{3})$

答案 1 :(得分:1)

这一个:^([a-zA-Z]{3})(?!VIRTUAL)[a-zA-Z]{7}\d{3}$

也许更好地匹配这种模式^([a-zA-Z]{3})VIRTUAL\d{3}$并反转结果?