正则表达式长度约束

时间:2018-08-29 06:58:38

标签: regex pcre

这是我当前的正则表达式。 (至少需要一个字母,数字和特殊字符。长度在8到100之间)

^(?=.*([a-zA-Z]))(?=.*\d)(?=.*(_|[^\w])).+{8,100}$

我想防止以空格开头或结尾的字符串。 为此,我尝试了

^(?=.*([a-zA-Z]))(?=.*\d)(?=.*(_|[^\w]))[^\s].+[^\s]{8,100}$

但是{8, 100}仅适用于最后一个[^\s]。 我该如何解决?

1 个答案:

答案 0 :(得分:4)

而不是匹配.+{8,100}(这是无效的正则表达式语法),请匹配一个非空格,后跟6至98个字符,再匹配另一个非空格。您可以使用\S代替[^\s],类似地,可以使用\W代替[^\w]

^(?=.*([a-zA-Z]))(?=.*\d)(?=.*(?:_|\W))\S.{6,98}\S$
                               ^^^^^^  ^^^^^^^^^^^