正则表达式长度约束
Regex length constraint
这是我当前的正则表达式。
(需要至少一个字母,数字和特殊字符。长度在8到100之间)
^(?=.*([a-zA-Z]))(?=.*\d)(?=.*(_|[^\w])).+{8,100}$
我想阻止以 space 开头或结尾的字符串。
为此,我尝试了
^(?=.*([a-zA-Z]))(?=.*\d)(?=.*(_|[^\w]))[^\s].+[^\s]{8,100}$
但是 {8, 100}
只适用于最后一个 [^\s]
。
我该如何解决?
不匹配 .+{8,100}
(这不是有效的正则表达式语法),而是匹配一个非 space,后跟 6 到 98 个字符,然后是另一个非 space .您可以使用 \S
代替 [^\s]
,类似地,\W
代替 [^\w]
:
^(?=.*([a-zA-Z]))(?=.*\d)(?=.*(?:_|\W))\S.{6,98}\S$
^^^^^^ ^^^^^^^^^^^
这是我当前的正则表达式。 (需要至少一个字母,数字和特殊字符。长度在8到100之间)
^(?=.*([a-zA-Z]))(?=.*\d)(?=.*(_|[^\w])).+{8,100}$
我想阻止以 space 开头或结尾的字符串。 为此,我尝试了
^(?=.*([a-zA-Z]))(?=.*\d)(?=.*(_|[^\w]))[^\s].+[^\s]{8,100}$
但是 {8, 100}
只适用于最后一个 [^\s]
。
我该如何解决?
不匹配 .+{8,100}
(这不是有效的正则表达式语法),而是匹配一个非 space,后跟 6 到 98 个字符,然后是另一个非 space .您可以使用 \S
代替 [^\s]
,类似地,\W
代替 [^\w]
:
^(?=.*([a-zA-Z]))(?=.*\d)(?=.*(?:_|\W))\S.{6,98}\S$
^^^^^^ ^^^^^^^^^^^