2015-06-19 2 views
1

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

enter image description here

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

Так мне интересно, в какую сторону идти:

  • какой-JQuery проверки входных данных
  • Rails проверки
  • ...

Продолжительность:

  • ruby 1.9.3p551
  • Rails 3.2.19

Kr

+0

Один JS подход заключается в использовании регулярных выражений для проверки ввода содержит не-английских символов (например, http://stackoverflow.com/questions/13840143/jquery-check-if-special-characters-exists-in-string, http://stackoverflow.com/questions/150033/regular-expression-to-match-non- английский-символы). Другой способ - проверить коды символов, как показано здесь. Http://jsfiddle.net/dekkard/o842p2p2/ – dekkard

ответ

1

Таким образом, после 4-х часов поисков я нашел эту красоту:

/\p{Arabic}/u 

И для многократного кодирования вы можете использовать :

/\p{Arabic}|\p{Han}/u 

Испытано через http://rubular.com/r/AKFhcpjIbL

Найденный через http://ruby-doc.org/core-2.1.1/Regexp.html

Полная проверка:

validates_format_of :first_name, :last_name, without: /\p{Arabic}/u 

Интересно читать в этом контексте ->How can I detect CJK characters in a string in Ruby?

0

Вы могли бы сделать проверку рельсов в модели:

http://apidock.com/rails/ActiveModel/Validations/HelperMethods/validates_format_of

class YourModel< ActiveRecord::Base 
validates_format_of :your_field, without: /[^\u0000-\u007F]+/ 
end 

\u0000-\u007F является эквивалентом к первому 255 символов в UTF-8 или Unicode, которые всегда являются ASCII c Символы.

+0

Не могли бы вы объяснить, что такое без части? – Vinozio

+0

вы можете увидеть полное объяснение здесь: http: // dostmuhammad.com/strip-non-ascii-characters-from-a-string-use-regex-regular-expressions/ – gabrielhilal

+0

Говорилось слишком скоро, это также не позволяет французским символам – Vinozio

0

Вы можете создать проверку на модели, которая обеспечивает входящие модели attributs является #ascii_only?

+0

Я пробовал это, и у нас также есть французские символы, которые мы хотим разрешить :) – Vinozio

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