Требуется регулярное выражение для поля, которое должно разрешать специальные символы, буквенно-цифровые символы и пробелы - PullRequest
1 голос
/ 09 января 2012

Я использую следующее регулярное выражение:

[a-zA-Z0-9-#.()/%&\\s]{0,19}.

Требование для поля должно быть разрешено для любой вещи, а размер поля должен быть 19. Дайте мне знать, если есть какие-либо исправления. Любая помощь приветствуется.

Ответы [ 3 ]

2 голосов
/ 09 января 2012

Вам просто нужно экранировать специальные символы.Попробуйте:

[a-zA-Z0-9\-#\.\(\)\/%&\s]{0,19}

Вы можете проверить свои регулярные выражения на http://rubular.com/

0 голосов
/ 09 января 2012

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

Символы, которые являются «особыми» в контексте самого регулярного выражения, часто не анализируются, если они находятся внутри диапазона. Так что вы в порядке с ., ( и ). Но проверьте ваш парсер, чтобы убедиться, что он понимает, что означает \s. Может быть проще просто поставить пробел.

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

0 голосов
/ 09 января 2012

Просто выйдите из тире - или поместите его в начале или в конце класса персонажа:

[a-zA-Z0-9\\-#.()/%&\\s]{0,19}

или

[-a-zA-Z0-9#.()/%&\\s]{0,19}

или

[a-zA-Z0-9#.()/%&\\s-]{0,19}
...