正则表达式,用于拒绝除组合之外的所有包含句点的字符串



我将如何创建一个正则表达式,拒绝所有在引号之间包含句点的字符串,除非该句点前面有数字符号?

[^.]*

将拒绝任何带有句点的内容,但我该如何对此进行例外处理?

这应该可以做到:

^(?!.*?"[^"]*(?<!d).[^"]*").+

下面是一个演示;请注意单元测试(左下角的链接)。

这个想法是匹配任何字符串(^和最终.+),但如果它匹配.*?"[^"]*(?<!d).[^"]*",则拒绝它:任何字符,",任何非"字符,前面没有数字的.,任何非"字符和另一个"

例子:

Foo               matches
foo "bar"         matches
"foo" bar         matches
Foo "bar."        does not match
Foo "Bar. Baz"    does not match
"Foo" bar "Baz."  does not match
Foo "bar 3."      matches
Foo "3."          matches

您可以使用此正则表达式:

".*#..*"|"[^.]*?"

它捕获"abc""a#.bc",但拒绝"a.bc"

首先,它将尝试在引号之间匹配一个字符串,该引号包含一个数字符号,后跟一个句点。然后,如果它不匹配,它将匹配不包含句点的引号之间的最短字符串

干杯

最新更新