来自unable to regex certain pattern
的续约我有以下正则表达式:
^(?!.* )[^#+&\'\"\\\\]*$
现在我要完成以下任务:
"" ---> invalid
" " ---> invalid
" a" ---> invalid
"a b" ---> valid
"a b" ---> invalid
有人可以帮助我吗?
答案 0 :(得分:1)
您可以使用此正则表达式:
^(?!^.*\s{2}.*$)[^\s][^#+&'"\\\n\r]*[^\s]$
在php中:
$re = "/^(?!^.*\\s{2}.*$)[^\\s][^#+&'\"\\\\\\n\\r]*[^\\s]$/m";
请参阅demo
(?!^.*\s{2}.*$)
将确保字符串不包含连续的空格。
^[^\\s][^#+&'\"\\\\\\n\\r]*[^\\s]$
将确保字符串不包含前导或尾随空格。
答案 1 :(得分:1)
您可以使用
^[^#+&'"\\\s]+(?:\s[^#+&'"\\\s]+)*$
PHP:
$re = '~^[^\s#+&\'"\\\\]+(?:\s[^\s#+&\'"\\\\]+)*$~';
请参阅regex demo。这个正则表达式不允许随后的空格和任何前导/尾随空格,是线性和快速的。
<强>详情:
^
- 字符串开头[^#+&'"\\\s]+
- 除了空格以外的1个字符以及#
,+
,&
,'
,"
,{{ 1}}字符 \
- 零个或多个序列:
(?:\s[^#+&'"\\\s]+)*
- 空白(1次)\s
- 除了空格以外的1个字符以及[^#+&'"\\\s]+
,#
,+
,&
,'
,{{ 1}}字符 "
- 字符串结尾(替换为\
以获得更安全的匹配)
这是IDEONE PHP demo只有echos $
:
\z