2012-02-06 80 views
0

我有我的用户定义字符串匹配输入字符串,我想简化定义字符串,所以我的用户不需要知道正则表达式内部。如何用AND运算符编写正则表达式?

我的想法是让*/-7721/-7722/-7723匹配任何给定的4位字符串,它是not 7721 AND not 7722 AND not 7723

我正在寻找一个正则表达式来执行上述输入字符串,这是一个4位数字。

我尝试过使用?!表示法,但它不能错误地匹配整个字符串。

(?![0-9]{4}) - 这不允许任何4位数的字符串。

((?!(7721))(?!(7722))(?!(77223)) - 这也没有工作

有AND运算符来执行上述?

感谢,

+0

在其编程语言?既然这些都是数字,你可以使用数学,而不是字符串操作? – Johnsyweb 2012-02-06 13:33:01

+0

@Johnsyweb:实际上是C++ boost正则表达式。让我更新我的标签。我如何使用数学? (抱歉问)? – NirMH 2012-02-06 13:34:06

+0

?=也许? http://stackoverflow.com/questions/469913/regular-expressions-is-there-an-and-operator – Tim 2012-02-06 13:34:50

回答

1

你忘了^:

^(?!(?:7721))(?!(?:7722))(?!(?:7723))\d{4} 

编辑:添加\ d {4}为实际匹配的字符串,而不是只是测试

+0

对不起,这不起作用... – NirMH 2012-02-06 13:36:00

+0

这是什么意思?你真的需要匹配字符串,还是仅仅测试它? – user1096188 2012-02-06 13:37:19

+0

现在与'\ d {4}'一起工作。谢谢。 – NirMH 2012-02-06 13:41:07