正则表达式用于在两个数字之间用一个可选的逗号匹配X个数字?

贾维德·阿哈迈德(Javed Ahamed)

我正在尝试编写一个RegExp以仅匹配8位数字,并在数字之间隐藏一个可选的逗号。

所有这些都应该匹配:

12345678
12,45678
123456,8

现在我有:

^[0-9,]{8}

但是当然会错误地匹配 012,,,67

范例:https//regex101.com/r/dX9aS9/1

我知道存在可选内容,但不了解如何保持适用于逗号的8位数字长度,同时也将逗号限制为1。

任何提示将不胜感激,谢谢!

威克多·斯特里比尤(WiktorStribiżew)

要匹配只能包含数字和介于中间的可选逗号的8个字符字符串,可以使用

^(?=.{8}$)\d+,?\d+$

正则表达式演示

前瞻性要求该字符串包含8个字符。,?将使匹配逗号成为可选,而+之后\d将需要至少1位数字在可选逗号前后。

如果您需要匹配具有8位数字和可选逗号的字符串,则可以使用

^(?:(?=.{9}$)\d+,\d+|\d{8})$

正则表达式演示

实际上,该字符串在字符串中将有9个字符(如果有逗号),或者只有8个字符(如果只有数字)。

解释:

  • ^ -字符串开始
  • (?:(?=.{9}$)\d+,\d+|\d{8}) -2种选择:
    • (?=.{9}$)\d+,\d+ -1+个数字后跟1个逗号,然后是1+个数字,匹配的整个字符串应为9个字符长(8个数字和1个逗号)
    • | - 或者
    • \d{8} -8位数字
  • $ -字符串结尾

请参阅Java代码演示(请注意,使用String#matches()模式开头和结尾处^$锚是多余的,可以省略,因为与该方法一起使用时,默认情况下该模式是锚定的):

List<String> strs = Arrays.asList("0123,,678", "0123456", // bad
        "01234,567", "01234567" // good
    );
for (String str : strs)
    System.out.println(str.matches("(?:(?=.{9}$)\\d+,\\d+|\\d{8})"));

领先/尾随逗号的注意事项:

您只需要在第一个替代分支中将+匹配1个或多个匹配项)量词替换*匹配0个或多个匹配项)即可,以允许使用前导/后跟逗号:

^(?:(?=.{9}$)\d*,\d*|\d{8})$

观看此正则表达式演示

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

正则表达式在一行中选择一个数字

来自分类Dev

SQL中的正则表达式以检测一个或多个数字

来自分类Dev

正则表达式可匹配第一个逗号和第一个数字之前的逗号之间的文本

来自分类Dev

定义一个正则表达式,它一次匹配一个数字,一次匹配所有其他数字

来自分类Dev

在正则表达式中,匹配一个数字的实例,但前提是不带任何其他数字

来自分类Dev

正则表达式匹配两个数字之间带有连字符的字符串

来自分类Dev

正则表达式,至少一个字符和一个数字,重复不超过两个

来自分类Dev

包含至少一个数字的字符串的正则表达式

来自分类Dev

如何只匹配正则表达式中的第一个数字

来自分类Dev

正则表达式匹配一个数字,然后跟一个符号重复多次?

来自分类Dev

正则表达式匹配一个数字序列和一个字符。它们之间

来自分类Dev

正则表达式匹配带有特定前缀的单词后从I到X的一个或多个数字或罗马数字

来自分类Dev

在正则表达式中,如何删除第一个数字,后跟逗号?

来自分类Dev

查找两个数字之间的正则表达式匹配

来自分类Dev

正则表达式,用于1-31之间的数字以及数字之间的可选逗号

来自分类Dev

一个或两个数字的正则表达式模式,不属于4数字组

来自分类Dev

正则表达式匹配两个数字之间的某物

来自分类Dev

一个数字和句点后的第一个数字的正则表达式

来自分类Dev

用正则表达式分隔字母后的第一个数字

来自分类Dev

正则表达式,以匹配从数字2开始的8个字母数字,并且其中至少有两个数字

来自分类Dev

正则表达式-捕获两个数字,确保第二个数字更大

来自分类Dev

定义一个正则表达式,它两次匹配一个数字,一次匹配所有其他数字

来自分类Dev

4个数字,一个逗号和4个数字的正则表达式

来自分类Dev

正则表达式与grep或sed匹配后,如何只返回两个数字?

来自分类Dev

两个数字不相同的两个数字的正则表达式

来自分类Dev

正则表达式:匹配给定整数中的一个数字的三元组

来自分类Dev

使用正则表达式在至少一个数字后允许逗号

来自分类Dev

正则表达式匹配一个数字不是

来自分类Dev

perl正则表达式在Moses中的两个数字之间添加点的区别

Related 相关文章

  1. 1

    正则表达式在一行中选择一个数字

  2. 2

    SQL中的正则表达式以检测一个或多个数字

  3. 3

    正则表达式可匹配第一个逗号和第一个数字之前的逗号之间的文本

  4. 4

    定义一个正则表达式,它一次匹配一个数字,一次匹配所有其他数字

  5. 5

    在正则表达式中,匹配一个数字的实例,但前提是不带任何其他数字

  6. 6

    正则表达式匹配两个数字之间带有连字符的字符串

  7. 7

    正则表达式,至少一个字符和一个数字,重复不超过两个

  8. 8

    包含至少一个数字的字符串的正则表达式

  9. 9

    如何只匹配正则表达式中的第一个数字

  10. 10

    正则表达式匹配一个数字,然后跟一个符号重复多次?

  11. 11

    正则表达式匹配一个数字序列和一个字符。它们之间

  12. 12

    正则表达式匹配带有特定前缀的单词后从I到X的一个或多个数字或罗马数字

  13. 13

    在正则表达式中,如何删除第一个数字,后跟逗号?

  14. 14

    查找两个数字之间的正则表达式匹配

  15. 15

    正则表达式,用于1-31之间的数字以及数字之间的可选逗号

  16. 16

    一个或两个数字的正则表达式模式,不属于4数字组

  17. 17

    正则表达式匹配两个数字之间的某物

  18. 18

    一个数字和句点后的第一个数字的正则表达式

  19. 19

    用正则表达式分隔字母后的第一个数字

  20. 20

    正则表达式,以匹配从数字2开始的8个字母数字,并且其中至少有两个数字

  21. 21

    正则表达式-捕获两个数字,确保第二个数字更大

  22. 22

    定义一个正则表达式,它两次匹配一个数字,一次匹配所有其他数字

  23. 23

    4个数字,一个逗号和4个数字的正则表达式

  24. 24

    正则表达式与grep或sed匹配后,如何只返回两个数字?

  25. 25

    两个数字不相同的两个数字的正则表达式

  26. 26

    正则表达式:匹配给定整数中的一个数字的三元组

  27. 27

    使用正则表达式在至少一个数字后允许逗号

  28. 28

    正则表达式匹配一个数字不是

  29. 29

    perl正则表达式在Moses中的两个数字之间添加点的区别

热门标签

归档