当前位置: 首页 > 知识库问答 >
问题:

正则表达式查找数字,在数字序列中使用连字符和逗号

韶云瀚
2023-03-14

我正在尝试编写一个正则表达式,允许数字、逗号和连字符在中间。我有2种模式(x表示数字)

  1. xx xx xx xxx xxx
  2. xx xx,xx xxx

我在第一个模式中尝试了类似的方法(?:-?[0-9])*$

我无法破解第二个图案。我对正则表达式的理解不太好,社区的一些帮助会很好。

有没有一种有效的方法来检查单个正则表达式中的两种模式。

谢谢帕拉尼

共有3个答案

桓兴腾
2023-03-14

如果您需要匹配精确的数字量,此正则表达式将执行以下操作:

(\d{2}-){2}\d{2}((-\d{3}){2}|,\s\d{2}-\d{3})

参见Regex101

韦衡
2023-03-14

你可以试试这个:

^[0-9](?:[-,\ ]{,2}[0-9])*$

或者:

^[0-9](?:[-,\ ]*[0-9])*$
郎正平
2023-03-14

使用

^\d(?:[-,\s]*\d)*$

参见证明。

解释

--------------------------------------------------------------------------------
  ^                        the beginning of the string
--------------------------------------------------------------------------------
  \d                       digits (0-9)
--------------------------------------------------------------------------------
  (?:                      group, but do not capture (0 or more times
                           (matching the most amount possible)):
--------------------------------------------------------------------------------
    [-,\s]*                  any character of: '-', ',', whitespace
                             (\n, \r, \t, \f, and " ") (0 or more
                             times (matching the most amount
                             possible))
--------------------------------------------------------------------------------
    \d                       digits (0-9)
--------------------------------------------------------------------------------
  )*                       end of grouping
--------------------------------------------------------------------------------
  $                        before an optional \n, and the end of the
                           string

Python:

import re
text = '12-34-56-789-0123'
if re.search(r'^\d(?:[-,\s]*\d)*$', text):
    print(f'"{text}" is valid')
else:
    print(f'"{text}" is invalid')

结果:

"12-34-56-789-0123" is valid
 类似资料:
  • 问题内容: 我想用以下代码查找字符串中的所有数字: 我还尝试将定界符添加到正则表达式,使用正数作为的第二个参数,使用仅数字字符串,例如“ 123”作为第一个参数… 但是输出总是 我似乎想念一下正则表达式在Go中的工作原理,但是无法绕开它。这不是有效的表达方式吗? 问题答案: 问题出在你的第二个整数参数上。引用以下软件包的文档: 这些例程使用一个额外的整数参数n;如果n> = 0,则该函数最多返回n

  • 我用Python编写了这个正则表达式并在regex101上进行了测试,但它仍然没有按照我想要的方式工作: 我试图找到的是一种模式,其中字符串可以选择以这些符号之一开头或结尾,中间只有数字: 该列表包括破折号、正斜杠、反斜杠、括号、符号、空格和句号。如果字符串只包含中间的数字,并且在字符串的开头和/或结尾有可选标点,则搜索应返回true。 此正则表达式似乎适用于大多数情况,但如果我在中间的数字中添加

  • 其中,我需要包括连字符和空格。 这意味着还必须可以输入值“”。

  • 问题内容: 我想查找没有重复数字的10位数字,例如: 目前,我正在使用正则表达式,但只能匹配10位数字(它不检查重复项。我正在使用此正则表达式: 可以使用正则表达式完成此操作,还是有更好的方法来实现此目的? 问题答案: 此正则表达式有效: 这使用锚定的否定前瞻和后向引用来断言没有重复的字符。 观看带有示例的现场演示。 在Java中:

  • 问题内容: 当我使用某种方式时,它仍然会触发,好像连字符无效。我试着和 问题答案: 转义使用应该没问题,但是您也可以尝试将其放在字符类的开头或结尾。这应该为您工作:

  • 我有一组由连字符分隔的ID,其中至少可以有6个字符,包含字母数字值和一些特殊字符,在末尾,只有数字值是不允许的。如下所示: 我正在尝试下面给出的具有以下规则的以下模式,但面临一些测试查询的困难... https://regex101.com/r/d8MFRE/5