我正在检查可执行文件的有效用户输入;但是它确实包括del
/ rm
,dir
/之类的东西ls
。输入通过 XML 收集并使用XSD进行验证。我不会检查文件是否存在,因为我的程序提交到服务器,该服务器可能有权也可能无法访问相同的文件。
那么唯一的要求是它没有新行\r
,或者\n
它不能完全是空白。我认为假设也\t
不允许使用制表符是有效的,但我更关心换行符。
谢谢
我正在检查可执行文件的有效用户输入;但是它确实包括del
/ rm
,dir
/之类的东西ls
。输入通过 XML 收集并使用XSD进行验证。我不会检查文件是否存在,因为我的程序提交到服务器,该服务器可能有权也可能无法访问相同的文件。
那么唯一的要求是它没有新行\r
,或者\n
它不能完全是空白。我认为假设也\t
不允许使用制表符是有效的,但我更关心换行符。
谢谢
我不完全确定您想要做什么,但是“没有换行符而不仅仅是空格”的正则表达式将是
[ \t]*\S[^\r\n]*
这匹配零个或多个空白字符,后跟一个非空白字符和任意数量的非 \r 或 \n 字符(包括空格和制表符)。它不能匹配仅由空格组成的字符串(因为不会有非空格字符匹配 \S)。
要也禁止标签,您可以将其更改为阅读
[ ]*\S[^\r\n\t]*
这是否意味着您有此处提到的限制: http ://www.regular-expressions.info/xml.html
如果是这样,那么您可能想要这样的东西:
[^\r\n\t]*[^\r\n\t\s][^\r\n\t]*
中间部分意味着必须有一个字符不是换行符、制表符或空格。其余部分表示该字符周围的零个或多个字符不是换行符或制表符(但它可以是空格)。我认为您可能可以将其\r\n\t
从中间组中删除,因为它们都可能包含在其中,\s
但我尚未对此进行任何测试。
\t
如果需要选项卡,请删除出现的三个。