2013-09-10 2 views
1

Как проверить символы содержит ли строка символов кроме:Regex Проверьте строка содержит ли другие, чем указано

  • алфавитов (Lowe-чехол/Upper-Case)

  • цифры

  • Space

  • Запятая (,)

  • Период (.)

  • Кронштейн ()

  • &

  • "

  • $

  • + (плюс) минус (-) (*) (= ) арифметический оператор

  • /

используя регулярное выражение в ColdFusion?

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

+0

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

ответ

3

Вы можете найти, если есть какие-либо недопустимые символы, как это:

<cfif refind("[^a-zA-Z0-9 ,.&'$()\-+*=/]" , Input) > 

    <!--- invalid character found ---> 

</cfif> 

Где [ ... ] класс символов (любой одиночный символ изнутри), а ^ в стартовых средств «NOT» - т.е. если он находит что-либо, что не является принятым символом, оно возвращает true.

Не понимаю «Маленький кронштейн (открытие закрытия)», но вы имеете в виду < и >? Если вы хотите () или {} просто поменяйте их. Для [] вам нужно, чтобы избежать их, как \[\]


Character Class спасаясь

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

  • \ - если вам нужна буквальная обратная косая черта, убегите.
  • ^ - каретка должна быть экранирована, если это первый символ, в противном случае он отменяет класс.
  • - - тире создает диапазон. Его следует избегать, если только первое/последнее (но рекомендуется всегда быть)
  • [ и ] - обе скобки должны быть экранированы.
+0

Спасибо, Питер. Это верно? "[^ a-zA-Z0-9,. & '$() - + = _ /]". Я не уверен насчет персонажей, которых нам нужно избегать. –

+0

Thnx много !!!!!!! –

+0

Почти. Вам нужно избегать '-', иначе он создает диапазон между') 'и' + '(поэтому означает, что' * 'включается (т.е.' [^ a-zA-Z0-9,. & '$() \ - + = _ /] '). Я обновил ответ с некоторыми заметками о пяти символах, символы которых должны быть экранированы внутри класса символов. –

1

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

^(?![a-zA-Z0-9 ,.&$']*[^a-zA-Z0-9 ,.&$']).*$ 

Приведенное выше выражение только будет работать, если вы разборе файл по строкам. Если вы хотите применить это к тексту, который содержит несколько строк, то вам нужно использовать глобальный модификатор и модификатор в многострочный и изменить выражение немного как это:

^(?![a-zA-Z0-9 ,.&$']*[^a-zA-Z0-9 ,.&$'\r\n]).*$ 

Regex101 Demo

+1

Coldfusion может обращаться к механизму регулярных выражений Java, но встроенная функция использует механизм Apache ORO. Кроме того, ваше выражение чрезмерно сложно и не соответствует символам, которые в настоящее время описаны в вопросе? –

+0

@PeterBoughton Ahh ОК спасибо, я этого не знал. –

0

Регулярное выражение :

[^][a-zA-Z0-9 ,.&'$] 

будет соответствовать, если строка содержит любые символы, отличные от символов в вашем списке.

Смежные вопросы