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

只匹配标准10位数字或只在字符之间加上单破折号和空格连字符的正则表达式

都浩淼
2023-03-14

我有一个正则表达式如下:

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

它是9到10位数字,只允许一个'-'和''(空格),但我想修改它,这将允许一个'-'和''只在字符之间(不是在开始和结束)。

目前,它也允许在开始和结束时使用一个'-'和''(空格)。

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

共有1个答案

岑光熙
2023-03-14

您可以将正则表达式表述为:

^(?![^-]*-[^-]*-)(?![^ ]*[ ][^ ]*[ ])\d(?:[ -]?\d){8,9}$

null

null

这是说:

^                         from the start of the number
    (?![^-]*-[^-]*-)      assert zero or one hyphens
    (?![^ ]*[ ][^ ]*[ ])  assert zero or one spaces
    \d                    match a single digit
    (?:                   which is then followed by
        [ -]?             an optional space or hyphen separator
        \d                and a digit
    ){8,9}                8 or 9 times (total 9 or 10 digits)
$                         end of the number
 类似资料:
  • 我试图匹配包含字母数字、连字符、下划线和空格的字符串。 连字符、下划线、空格和数字是可选的,但第一个和最后一个字符必须是字母。 例如,这些都应该匹配: 我试过这个: 但它在开始/结束时与空格、下划线或连字符匹配,但它应该只允许在两者之间。

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

  • 我需要在以下条件下使用C#中的正则表达式匹配字符串: 整个字符串只能是字母数字(包括空格) 最大长度不得超过15个字符(包括空格) 首先 如果这些先决条件中的任何一个被打破,比赛就不会进行。 以下是我目前掌握的情况: 下面是一些应该匹配的测试字符串: 堆栈溢出 伊姆特最伟大的 一个 超人23s 一二三 还有一些不应该匹配的(注意空格): 堆叠 [double_space] 溢流岩石 23你好 这是

  • 我在ASP.NET应用程序中有一个textbox,我需要使用正则表达式来验证用户输入字符串。要求字符串的连字符总数只能为一个。 匹配项: null 测试--您好 -测试- 测试-您好--

  • 为什么下面的正则表达式不匹配连字符(或与号、句号或逗号,尽管我暂时将它们排除在下面的字符类之外)?我在试着匹配字符串... ...(这是单词“hello”的语音表示),并且当字符串中有连字符时,匹配失败(上面列出的与数等相同)。 这种模式... ...起作用,根据regex101.com的说法,它本质上是完全相同的模式,所以我不明白为什么更长的模式不起作用。