Простое регулярное выражение для тех, кто знает регулярные выражения

#javascript #jquery #regex #validation #coldfusion

#javascript #jquery #регулярное выражение #проверка #coldfusion

Вопрос:

Я очень мало знаю о регулярных выражениях, поэтому это оказалось для меня очень сложным.

У меня есть форма, в которой мне нужно убедиться, что она содержит только A-Z или a-z или 1-0 и несколько других «одобренных» символов и » (пробел). При написании я хочу разрешить только:

 `abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 /:;,.-()`  
  

Из другого вопроса stackoverflow я нашел это регулярное выражение:
^((?:[A-Za-z0-9-'.,@:?!()$#/\] |amp;[^#])*amp;?)$
но я думаю, что оно допускает слишком много специальных символов, а также в примечаниях кто-то прокомментировал c #, поэтому я не уверен, применимо ли это в том виде, в котором я пытаюсь его использовать. Я использую coldfusion, jquery и javascript. На самом деле я использую подключаемый модуль jQuery, для которого я пытаюсь добавить правило проверки (подключаемый модуль являетсяhttp://bassistance.de/jquery-plugins/jquery-plugin-validation /).

Примером недопустимой записи в форме является: MC amp; I Enterprise, но MC / I является приемлемым

Может ли кто-нибудь помочь?

Комментарии:

1. Здесь вы можете узнать больше о регулярных выражениях: regular-expressions.info

2. b-митч спасибо за добавление этого тега Martinho-Fernandes спасибо за ссылку

3. Не могли бы вы превратить заголовок вашего вопроса в реальный вопрос и конкретизировать свой вопрос. Это упрощает понимание и поиск.

Ответ №1:

Чтобы начать практиковаться с регулярными выражениями, вы можете рассмотреть возможность загрузки regex coach:http://weitz.de/regex-coach это бесплатная программа, которая объясняет регулярные выражения и позволяет увидеть, как работает синтаксический анализ регулярных выражений.

Вы можете начать использовать w сокращение: оно соответствует любому так называемому «символу слова», то есть A-Z , a-z , 0-9 и _ (но оно не содержит никаких пробелов); затем вы можете добавить все символы, которые вам нужны, в класс character.

Если «_» (подчеркивание) находится в списке разрешенных символов, вы могли бы использовать это регулярное выражение (которое допускает пустую строку):

 ^[w ()/:;,.-]*$
  

Или, если вы хотите проверять только непустые строки, вы могли бы использовать это (которое имеет знак вместо *, означающий соответственно «сопоставление одного или нескольких символов» и «сопоставление нуля или более символов»):

 ^[w ()/:;,.-] $
  

Если «_» (подчеркивание) нет в списке разрешенных символов, то вы должны использовать интервалы явно:

 ^[a-zA-Zd ()/:;,.-]*$
  

или

 ^[a-zA-Zd ()/:;,.-] $
  

Комментарии:

1. Не забывайте w matches _, которого нет в списке разрешенных символов

2. @paolo-stefan Все ответы были правильными, но я принял этот, поскольку он объясняет больше, чем просто решение.

Ответ №2:

Следующее должно сделать:

 '^[a-zA-Z0-9 /:;,.-()]*$'
  

Я не думаю, что двоеточие, запятую или точку с запятой нужно экранировать, но если это доставляет вам проблемы, добавьте обратную косую черту перед ними тоже. Некоторые другие экранирования могут быть излишними, но они не должны ничему повредить.

Комментарии:

1. Возможно, вместо *, чтобы избежать сопоставления с пустой строкой?

2. Для этого символьного класса единственным символом, нуждающимся в экранировании, является "-" . (И даже не это, если оно помещено в начало или конец класса.)

3. Спасибо ridgerunner, я склонен ошибаться в сторону чрезмерного экранирования вещей. @Alex K. Я должен был указать на это, это полностью зависит от dlackey относительно того, что он готов принять. Спасибо.

Ответ №3:

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

 ^[a-zA-Z0-9 /:;,.-()] $
  

Это должно соответствовать, только если полный текст содержит только символы из вашего разрешенного списка (более сложные правила, например, отсутствие пробелов в конце и т.д., Могут потребовать более регулярного выражения.

Этот сайт является чрезвычайно полезным введением в регулярные выражения.

Комментарии:

1. По крайней мере, разве вам не нужно было бы экранировать - ?