【发布时间】:2021-02-06 07:25:39
【问题描述】:
我需要帮助来完成我的德国税号正则表达式。这些数字的格式取决于州。我几乎可以匹配所有的州。剩下的州只有黑森州和不来梅州。问题是,它们与其他号码(如电话号码)非常相似。我的demo 中有一个完整的示例。
也许你可以帮我匹配所有相关的数字。
这是我的正则表达式:
(?:\d{3}\s?/\s?\d{3}\s?/\s?\d{5})|(?:\d{2}\s?/\s?\d{3}\s?/\s?\d{5})|(?:\d{3}\s?/\s?\d{4}\s?/\s?\d{4})|(?:\d{5}\s?/\s?\d{5}\b)|(\d{11})|(\d{10})
这些是为了完成所有状态的正则表达式而留下的关键模式:
Hessen: 02581580201
025 815 80201
Bremen: 7581508152
75 815 08152
【问题讨论】:
-
你可以在最后省略
(\d{11})|(\d{10})对吧?还是应该02581580201和025 815 80201匹配? -
如果我删除了我的正则表达式
|(\d{11})|(\d{10})的最后一部分,它仍然与黑森州和不来梅州的数字不匹配 -
对于这些值,您可以在可选的空白字符之间匹配
/,或单个空白字符\b(?:\d{3}(?:\s?/\s?|\s)\d{3}(?:\s?/\s?|\s)\d{5}|\d{2}(?:\s?/\s?|\s)\d{3}(?:\s?/\s?|\s)\d{5}|\d{3}\s?/\s?\d{4}\s?/\s?\d{4}|\d{5}(?:\s?/\s?|\s)\d{5}|\d{10,11})\b,然后将它们放在由单词边界包围的1 个交替中。 regex101.com/r/RaICQa/1 -
请告诉我实际输入及其预期输出。
-
@PParker 在某些情况下,您实际上是在使用
|作为量词,例如(\d{11})|(\d{10})。使用量词,这看起来像\d{10,11}。是否使用量词,由你决定,但我认为有必要指出。