Регулярное выражение без и не полностью пространства

StackOverflow https://stackoverflow.com/questions/9501852

  •  14-11-2019
  •  | 
  •  

Вопрос

Я проверяю допустимость пользовательского ввода для исполняемого файла;однако он включает в себя такие вещи, как del/rm, dir/ls.Входные данные собираются через XML и проверяются с помощью XSD.Я не буду проверять существование файла, поскольку моя программа отправляется на сервер, который может иметь или не иметь доступ к тем же файлам.

Единственное требование - отсутствие новой строки. \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 если вам нужны вкладки.

Другие советы

Я не совсем уверен, что вы хотите сделать, но регулярные выражения для «без новой строки и не только пробелов» будут

[ \t]*\S[^\r\n]*

Это соответствует нулю или более символам пробелов, за которыми следуют символы без пробелов и произвольное количество символов, которые не являются или (включая пробелы и табуляции).Он не может соответствовать строке, состоящей только из пробелов (поскольку не будет символов без пробелов, соответствующих \S).

Чтобы также запретить вкладки, вы можете изменить это на следующее:

[ ]*\S[^\r\n\t]*
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top