我想使用PCRE表达式确保除换行符之外的所有符号的长度匹配某些范围:
preg_match('/^.{1,7}$/', "some\n\ntxt")
我怎样才能做到这一点?试图使用[^\n]
但没有运气
答案 0 :(得分:2)
您也可以反转条件并测试模式是否匹配:
if ( !preg_match('/^.{8}/m', "some\n\ntxt") )
m修饰符更改与行的开头和结尾匹配的锚^
和$
的含义(默认情况下不是字符串)。
答案 1 :(得分:0)
这有效
^(?:(?:\r?\n)*[^\r\n]){1,7}(?:\r?\n)*$
https://regex101.com/r/D8lJmv/3
解释
^ # BOS
(?: # Cluster begin
(?: \r? \n )* # optional many newlines
[^\r\n] # single non-newline
){1,7} # Cluster end, 1 - 7 non-newline chars
(?: \r? \n )* # optional many newlines
$ # EOS
您也可以将其概括为空格
^(?:\s*\S){1,7}\s*$
解释
^ # BOS
(?: # Cluster begin
\s* # optional many whitespaces
\S # single non-whitspace
){1,7} # Cluster end, 1 - 7 non-whitespace chars
\s* # optional many whitespaces
$ # EOS