gpt4 book ai didi

java - 数字的正则表达式

转载 作者:行者123 更新时间:2023-11-30 06:05:10 26 4
gpt4 key购买 nike

我正在尝试创建一个数字正则表达式,其中 7 应该至少出现一次,并且不应包含 9

/[^9]//d+

我不知道如何让它至少包含 7 一次

此外,以下示例失败

123459,它接受字符串,即使其中包含一个 9

但是,如果我的字符串是 95,它会拒绝它,这是正确的

最佳答案

代码

方法1

See regex in use here

(?=\d*7)(?!\d*9)\d+

方法2

See regex in use here

\b(?=\d*7)[0-8]+\b

注意:与使用 406 个步骤的方法 1 相比,此方法使用的步骤更少 (170)。

或者,您也可以将 [0-8] 替换为 [^9\D] ,如 here 所示,这基本上是说不匹配 9\D(任何非数字字符)。

您还可以使用 \b(?=[^7\D]*7)[0-8]+\bhere 所示,这会将步数从 170 减少到147.

方法3

See regex in use here

\b[0-8]*7[0-8]*\b

注意:此方法比上述两种方法使用的步骤少,共 139 个步骤。此正则表达式的唯一问题是您需要识别模式中多个位置的有效字符。


结果

输入

**VALID**

123456780
7
1237412

**INVALID**

9
12345680
1234567890
12341579

输出

注意:下面显示的是匹配的字符串。

123456780
7
1237412

说明

方法1

  • (?=\d*7) 正向先行确保后面的数字是任意次数的任意数字,后跟字面上的 7
  • (?!\d*9) 负向先行确保后面的内容不是任意次数的任何数字,后跟字面上的 9
  • \d+ 任何数字一次或多次

方法2

  • \b 将位置断言为单词边界
  • (?=\d*7) 正向先行确保后面的数字是任意次数的任意数字,后跟字面上的 7
  • [0-8]+ 匹配集合中存在的任何字符 0-8
  • \b 将位置断言为单词边界

方法3

  • \b 将位置断言为单词边界
  • [0-8]* 匹配任意数字(9 除外)任意次数
  • 7 按字面意思匹配数字 7
  • [0-8]* 匹配任意数字(9 除外)任意次数
  • \b 将位置断言为单词边界

关于java - 数字的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47399250/

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