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

C#正则表达式匹配15个字符,单空格,字母数字

秦宏硕
2023-03-14

我需要在以下条件下使用C#中的正则表达式匹配字符串:

  1. 整个字符串只能是字母数字(包括空格)
  2. 最大长度不得超过15个字符(包括空格)
  3. 首先

如果这些先决条件中的任何一个被打破,比赛就不会进行。

以下是我目前掌握的情况:

^\b([A-z]{1})(([A-z0-9 ])*([A-z]{1}))?\b$

下面是一些应该匹配的测试字符串:

  • 堆栈溢出
  • 伊姆特最伟大的
  • 一个
  • 超人23s
  • 一二三

还有一些不应该匹配的(注意空格):

  • 堆叠 [double_space] 溢流岩石
  • 23你好
  • 这是超过15个字符长
  • 你好23
  • [space_here]嘿

任何建议都将不胜感激。

共有3个答案

翟誉
2023-03-14

我的版本,再次使用前瞻:

^(?=.{1,15}$)(?=^[A-Z].*)(?=.*[A-Z]$)(?![ ]{2})[A-Z0-9 ]+$

解释:

^               start of string
(?=.{1,15}$)    positive look-ahead: must be between 1 and 15 chars
(?=^[A-Z].*)    positive look-ahead: initial char must be alpha
(?=.*[A-Z]$)    positive look-ahead: last char must be alpha
(?![ ]{2})      negative look-ahead: string mustn't contain 2 or more consecutive spaces
[A-Z0-9 ]+      if all the look-aheads agree, select only alpha-numeric chars + space
$               end of string

这也需要IgnoreCase选项设置

葛学民
2023-03-14

试试这个正则表达式: -

"^([a-zA-Z]([ ](?=[a-zA-Z0-9])|[a-zA-Z0-9]){0,13}[a-zA-Z])$"

说明:-

[a-zA-Z]    // Match first character letter

(                         // Capture group
    [ ](?=[a-zA-Z0-9])    // Match either a `space followed by non-whitespace` (Avoid double space, but accept single whitespace)
            |             // or
    [a-zA-Z0-9]           // just `non-whitespace` characters

){0,13}                  // from `0 to 13` character in length

[a-zA-Z]     // Match last character letter

更新:-

要处理单个字符,您可以将第一个字符之后的模式设置为可选,如注释中@Rawling所指出的那样:-

"^([a-zA-Z](([ ](?=[a-zA-Z0-9])|[a-zA-Z0-9]){0,13}[a-zA-Z])?)$"
         ^^^                                            ^^^
     use a capture group                           make it optional
陈实
2023-03-14

您应该使用< code>lookaheads

                                                               |->matches if all the lookaheads are true
                                                               --
^(?=[a-zA-Z]([a-zA-Z\d\s]+[a-zA-Z])?$)(?=.{1,15}$)(?!.*\s{2,}).*$
-------------------------------------- ----------  ----------
                 |                       |           |->checks if there are no two or more space occuring
                 |                       |->checks if the string is between 1 to 15 chars
                 |->checks if the string starts with alphabet followed by 1 to many requireds chars and that ends with a char that is not space

你可以在这里尝试一下

 类似资料:
  • 问题内容: 我正在寻找Java中与字符串中所有空白字符匹配的正则表达式。“ \ s”仅匹配一些,不匹配和类似的非ASCII空格。我正在寻找与Java字符串中可能出现的所有(常见)空白字符匹配的正则表达式。 [编辑] 需要说明的是:我不是指字符串序列“ ”我是指通常用“ ” 表示的单个Unicode字符U + 00A0 ,例如在HTML中,以及所有其他具有类似空格的unicode字符,例如“ NAR

  • 我试图匹配包含字母数字、连字符、下划线和空格的字符串。 连字符、下划线、空格和数字是可选的,但第一个和最后一个字符必须是字母。 例如,这些都应该匹配: 我试过这个: 但它在开始/结束时与空格、下划线或连字符匹配,但它应该只允许在两者之间。

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

  • 问题内容: 我需要将Python中的一个表达式与仅匹配偶数个字母出现的正则表达式进行匹配。例如: 偶数应匹配。 问题答案: 试试这个正则表达式: 并且如果s不需要是连续的:

  • 我有以下正则表达式,我将其解释为一种模式,它将匹配仅由字母数字字符和连字符组成的字符串。 问题是这个正则表达式也匹配空格,这在子域名中显然是不可取的。 对于加分,这是验证子域名的合适方法吗?我不确定哪些特殊字符是允许的,但我想我会保持简单,只允许连字符。还有什么我需要检查的吗?例如,最大长度?

  • 要匹配至少包含一个字母或数字的字符串,JavaScript正则表达式是什么?这至少需要一个字母数字字符(至少一个字母或至少一个数字)。