平台中iOS捆绑包ID的正则表达式,用于在Azure B2C中注册的应用程序

平台中iOS捆绑包ID的正则表达式,用于在Azure B2C中注册的应用程序,ios,regex,azure-ad-b2c,regex-lookarounds,Ios,Regex,Azure Ad B2c,Regex Lookarounds,我需要一个最多222个字符的正则表达式 必须使用a-z a-z 0-9 也可以有。及- 但是: 不能从一开始。或- 不能以…结束。或- 不能有多个,如“.”或“-” 不能只有。或- 示例: 好: asd.asd.asd.asd.asd.aadas.asdasdasd as-d.asd.a-sd 坏的: .asd.asd -asd-asd A-asd.asd 自闭症 自闭症- 自闭症- asd.asd- 自闭症-- asd asd.asd-.asd - asd--asd..asd 我的结局是这

我需要一个最多222个字符的正则表达式

  • 必须使用a-z a-z 0-9
  • 也可以有。及- 但是:
  • 不能从一开始。或-
  • 不能以…结束。或-
  • 不能有多个,如“.”或“-”
  • 不能只有。或-
示例:

asd.asd.asd.asd.asd.aadas.asdasdasd

as-d.asd.a-sd

坏的:

.asd.asd

-asd-asd

A-asd.asd

自闭症

自闭症-

自闭症-

asd.asd-

自闭症--

asd

asd.asd-.asd

-

asd--asd..asd

我的结局是这样的
^[^-.]((?!-)[a-zA-Z0-9\-]\.?[^-]){1100}[^-.]$
但它不包括这种情况,如
asd.asd-.asd


这是应用程序注册中平台iOS捆绑包ID的regex

您可以在字符类
[a-zA-Z0-9\-]

(请注意,如果
-
位于开始或结束位置,则不必转义)

  • ^
    字符串的开头
  • (?=.{1100}$)
    断言1-100个字符
  • [a-zA-Z0-9]+
    重复1+次,与列出的任何一项匹配
  • (?:[-.][a-zA-Z0-9]+)*
    可选择重复
    -
    ,并重复所列任何一项1+次
  • $
    字符串结尾

我们真的需要“不捕获组”
?:
如果需要,为什么我们不把它也放在这个正则表达式的第一部分?@freak_geek该模式的第一部分是匹配的
[a-zA-Z0-9]+
,它不必在一个组中,因为我们没有对组本身做任何事情。模式的这部分
(?:[-.][a-zA-Z0-9]+)*
被分组为作为一个整体重复。您可以将非捕获组转换为捕获组
([-.][a-zA-Z0-9]+)*
,但仅用于匹配,不需要组值本身。
^(?=.{1,100}$)[a-zA-Z0-9]+(?:[-.][a-zA-Z0-9]+)*$