2012-02-06 85 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