0

好的,首先我与正则表达式的关系很紧张。我通常可以设法让它抓取或验证我需要的数据。但现在感觉就像我碰到了正则表达式的墙。

我已经连接了需要验证的用户数据字符串。
它们看起来像:john|45|some|data|00111{more|data
-part{more|data应该能够发生 0 次或更多次,但如果我只使用(regex)*. 然后,如果一个部分失败,字符串仍然是部分匹配的。在这种情况下,我希望它失败。

为了简化我的情况:我想要foo, foobar,foobarbar来验证。但是foobarcar验证foobat失败。

foo(?:bar)*将匹配所有(最后 2 个仅部分匹配)

...如果可能的话,我想保留“不捕获”部分(?:)。

据我所知,解决方案可能在 LookAround 中,代码中的 DontAllowPartialMatches 参数,或者拆分字符串并单独验证部分......

任何帮助是极大的赞赏。

4

1 回答 1

0

使用以下命令显式匹配字符串(或可能是行,取决于您的方言)的结尾$

foo(?:bar)*$

这将匹配 foo、foobar、foobarbar 等,但不匹配 foobarcar 或 foobat,如您所愿。

(不过,它也会匹配 barfoobar,所以如果这是一个问题,您可能也希望使用它^来显式匹配开始。^foo(?:bar)*$

于 2013-05-02T09:25:44.130 回答