Ваше регулярное выражение является неправильным, по крайней мере, одним способом - если вы считаете дефис «специальным символом», то вы должны поместить его в начало или конец диапазона. Итак: [a-zA-Z0-9#.()/%&\s-]{0,19}
.
Символы, которые являются «особыми» в контексте самого регулярного выражения, часто не анализируются, если они находятся внутри диапазона. Так что вы в порядке с .
, (
и )
. Но проверьте ваш парсер, чтобы убедиться, что он понимает, что означает \s
. Может быть проще просто поставить пробел.
Кроме того, если ваш анализатор регулярных выражений стремится разделить регулярное выражение косыми чертами, то вам, возможно, придется избежать косой черты в середине диапазона: [a-zA-Z0-9#.()\/%&\s-]{0,19}
.