2016-07-21 2 views
0

В рельсах 4 мне нужно проверить буквенно-цифровое поле, которое может принимать только точки (.), Дефис (-), косую черту (/) и пробел между символами.Рельсы - проверка буквенно-цифрового поля

Например: AB123-GH345 или AB45.NH744 или KHJ3/SD34 или HJS23 JKA34

Я попытался с /^[0-9]+#$/ и /^\d+([.,]\d+)?$/ и /^[0-9]+#$/, но он не работает в соответствии с требованием.

Значение должно приниматься согласно примерам. Пожалуйста, помогите мне подтвердить это поле.

+1

Что такое '#' в покушениях регулярных выражений означают делать? Этот символ не имеет особого значения в регулярном выражении. Вы не дали нам достаточно информации. Имеются ли следующие значения? '0',' A', '.',' .-/',' A/0', '-NH744',' 123AB-345GH', 'AB123.GH345.LM567' –

ответ

2

Я думаю, что это может помочь вам:

/^[A-Za-z0-9-\/\.\s]+$/ 

Это работает для всех примеров, которые Вы предоставили

AB123-GH345 или AB45.NH744 или KHJ3/SD34 или HJS23 JKA34

и отклонено, когда я вставил символ ? посередине (HJS23?JKA34).


Update

Если вы не хотите многострочные якоря, то вы можете использовать его как это:

/\A[A-Za-z0-9-\/\.\s]+\z/ 

Вы можете использовать этот Rubular сайт, чтобы проверить свои коды Regex.

+1

Thank you. '/ \ A [A-Za-z0-9 - \/\. \ s] + \ z/'работает нормально. –

0
  • Попробуйте это:

    /^[a-zA-Z\d\.\-\/# ]+$/ 
    
+0

После этого я получаю ошибка, например 'ArgumentError (предоставленное регулярное выражение использует многострочные якоря (^ или $)' –

+0

Вы можете [установить опцию ': multiline' в * true *] (http://guides.rubyonrails.org/security.html# регулярные выражения), чтобы включить эти якоря '^'/'$', но я сомневаюсь, что вы действительно в них нуждаетесь. –

0

попробовать это регулярное выражение

^[a-zA-Z0-9\. /'\-]+$ 

Надеется, что это поможет