重复模式,但最后一个不同- Regex c#

balp4ylt  于 2023-02-17  发布在  C#
关注(0)|答案(1)|浏览(138)

我有这样的模式:
^([a-zA-Z0-9]+ )+$
它应该匹配如下句子:

sfjgsjsg_sbskdf_dsjkfshfsh
sdfhs_skjhsijdgh_dsnjbkg_sdkfsbk_nasjksdj_nsdjkfs

我不知道字的大小,也不知道每行有多少字。
问题是上面模式只识别如下句子:

sfjgsjsg_sbskdf_dsjkfshfsh_
sdfhs_skjhsijdgh_dsnjbkg_sdkfsbk_nasjksdj_nsdjkfs_

等于_-〉(space)

wwwo4jvm

wwwo4jvm1#

您可以使用

^[a-zA-Z0-9]+(?: [a-zA-Z0-9]+)*$

或者,如果有空格的意思:

^[a-zA-Z0-9]+(?:\s[a-zA-Z0-9]+)*$

如果只能出现一个水平空格:

^[a-zA-Z0-9]+(?:[\p{Zs}\t][a-zA-Z0-9]+)*$

并且如果可以存在多于一个:

^[a-zA-Z0-9]+(?:[\p{Zs}\t]+[a-zA-Z0-9]+)*$

请注意,通过将*[\p{Zs}\t]\s*放置在^(紧接着它)和$(紧接着它)锚旁边,可以添加前导/尾随空格支持。

  • 详细信息 *:
  • ^-字符串开始
  • [a-zA-Z0-9]+-一个或多个ASCII字母数字字符
  • ``-空格([\p{Zs}\t]是除换行符以外的任何空格,\s匹配任何空格)
  • (?: [a-zA-Z0-9]+)*-零个或多个重复的空格以及一个或多个ASCII字母数字字符
  • $-字符串结束。

相关问题