gpt4 book ai didi

Java正则表达式排除某些数字

转载 作者:行者123 更新时间:2023-12-02 02:48:34 25 4
gpt4 key购买 nike

我正在尝试执行以下操作,并尝试找到如何进行正确排除的示例,但我无法完全掌握其中的窍门。

question

我应该排除数字 000、666 以及 900-999 之间的所有数字。

这是我对这个问题的尝试,但它不包括排除:

String p = "(^[0-9]{3})-([0-9]{2})-([0-9]{4}$)";

这导致了不必要的匹配: wrong answer

这是我尝试排除的尝试,但我不确定如何:

String p = "(^[^666000]{3})-([0-9]{2})-([0-9]{4}$)";

这导致了一些匹配:

enter image description here

如有任何帮助,我们将不胜感激!

最佳答案

匹配除 000 以外的任何内容, 666900-999 :

[1-578]\d\d|(?:0\d[1-9]|0[1-9]\d)|(?:6\d[0-57-9]|6[0-57-9]\d)

Regex101 Demo

这是如何工作的:

  • [1-578]\d\d第一个替代匹配 0 之外的所有数字, 69 1xx , 2xx , 7xx等等,如此处 [1-578]这本质上意味着 1-578 .
  • (?:0\d[1-9]|0[1-9]\d)匹配所有以 0 开头的数字并确保数字不应该全部三个零
  • (?:6\d[0-57-9]|6[0-57-9]\d)匹配所有以 6 开头的数字 并确保该数字不应该全部都是三个六

测试:

快速测试以验证除 000 之外的所有内容是否匹配, 666900-999 : Dotnet Fiddle

// Output for non-matching characters:
000, 666, 900, 901, 902, 903, 904, 905, 906, 907, 908, ... and so on

关于Java正则表达式排除某些数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44198175/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com