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