regex соответствие альфа-символу, сопровождаемому 4 буквенно-цифровыми индикаторами

На основе подробного разговора, чтобы очистить несколько деталей. Вот ответ.

Вам нужно внести небольшие изменения в свои модели, так как было довольно сложно понять, чего вы хотите достичь.

Модели:

class ManufacturerName(models.Model):
    name_id = models.AutoField(primary_key=True)
    company_name = models.CharField(unique=True, max_length=50)

    class Meta:
        managed = False
        db_table = 'manufacturer_name'


class CarBuild(models.Model):
    car_id = models.AutoField(primary_key=True)
    car_icon = models.CharField(max_length=150, blank=True, null=True)
    manufacturer = models.ForeignKey(ManufacturerName,on_delete=models.SET_NULL) 

    class Meta:
          managed = False
          db_table = 'car_build'


class CarList(models.Model):
    list_id = models.AutoField(primary_key=True)
    car = models.ForeignKey(CarBuild, on_delete=models.DO_NOTHING)
    title = models.CharField(unique=True, max_length=100)
    description = models.TextField()

    class Meta:
       managed = False
       db_table = 'cars'

И тогда вам нужно настроить сериализаторы.

class CarListSerialiser(serializers.HyperlinkedModelSerializer):

    company_name= serializers.SerializerMethodField(read_only=True)

    class Meta:
        model = CarList
        fields =  ('list_id', 'company_name', 'title')

    def get_company_name(self, obj):
        return obj.car.manufacturer.company_name

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

class CarListViewSet(viewsets.ModelViewSet):
    queryset = CarList.object.all()
    serializer_class = CarListSerialiser
24
задан Jason Plank 9 November 2011 в 16:30
поделиться

7 ответов

РЕДАКТИРОВАНИЕ: Grrr... отредактировал regex из-за нового "разъяснения":)

^[A-C][a-zA-Z0-9]{4}$

РЕДАКТИРОВАНИЕ: объяснить вышеупомянутый Regex на английском языке...

^ и $ средний "От начала до конца" (это гарантирует, чтобы целая строка отлично соответствовала)

[A-C] означает, что "Соответствие или A, B, или C"

[a-zA-Z0-9]{4} означает "Соответствие 4 строчных буквы, прописные буквы или числа"

45
ответ дан Jason Plank 28 November 2019 в 23:03
поделиться

Что-то вроде:

[A-C][A-Za-z0-9]{4}

я советовал бы смотреть на http://regexlib.com/CheatSheet.aspx , если Вы незнакомы с регулярными выражениями и пытаетесь сделать подобные простые regexs сами.

существует также много regex онлайн тестирование приложений, таких как: http://regexlib.com/RETester.aspx , которые позволяют Вам протестировать свой regexes, не пишущий кода.

6
ответ дан Martin 28 November 2019 в 23:03
поделиться

Вы подразумеваете, что первая буква должна быть A, B или C? Или это может быть какая-либо буква?

, Если бы это должен быть A, B, или (чувствительный к регистру) C, тогда это было бы регулярным выражением.

[A-C][a-zA-Z0-9]{4}

Иначе, другие ответы здесь достаточны.

2
ответ дан Carl 28 November 2019 в 23:03
поделиться

В случае, если это не Perl regexps, мы говорим о, некоторое вырезание и вклейка необходимо:

[ABC][a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9]

я вырезал и вставил" [a-zA-Z0-9]" четыре раза.

0
ответ дан 28 November 2019 в 23:03
поделиться
/[ABC](?i:[a-z0-9]{4})/
0
ответ дан Brad Gilbert 28 November 2019 в 23:03
поделиться

Попробуйте следующее:

\<[ABC]\([a-zA-Z0-9]{4}\)\>
0
ответ дан 28 November 2019 в 23:03
поделиться

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

^[A-C]\w{4}$

\ w означает любой буквенно-цифровой символ.

1
ответ дан 28 November 2019 в 23:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: