Regex Django-使用正则表达式检查整数必须以9开头,长度为10

Regex Django-使用正则表达式检查整数必须以9开头,长度为10,regex,django,Regex,Django,我的错在哪里 mobile = forms.IntegerField( label='Mobile', widget=forms.NumberInput(attrs={ 'class': 'form-control', 'required': 'required' }), error_messages={ 'invalid': 'Required', } ) def clean_mobile(self):

我的错在哪里

mobile = forms.IntegerField(
    label='Mobile',
    widget=forms.NumberInput(attrs={
        'class': 'form-control',
        'required': 'required'
    }),
    error_messages={
        'invalid': 'Required',
    }
)

def clean_mobile(self):
    mobile = self.cleaned_data['mobile']

    if not re.match('^((?!([0-8]))[0-9]{9})$', str(mobile)):
        self.add_error('mobile', 'Wrong number')

    return mobile

始终返回
False

在正则表达式中,您正在查找输入字符串开头不在范围
[0-8]
内的数字,该字符串字面意思是
9
。负先行断言然后将光标返回到第一个字符之前的位置。然后查找9位数字和字符串末尾,该字符串在10位数字上立即失效

试试这个:

^9\d{9}$

在正则表达式中,您要查找的数字不在输入字符串开头的
[0-8]
范围内,该字符串的字面意思是
9
。负先行断言然后将光标返回到第一个字符之前的位置。然后查找9位数字和字符串末尾,该字符串在10位数字上立即失效

试试这个:

^9\d{9}$

你的意见是什么?长度明显为
9
。请尝试
^9[0-9]{9}$
@revo问题已更新。@revo它成功了。tnx。可以作为答案提交吗?您的意见是什么?长度明显为
9
。请尝试
^9[0-9]{9}$
@revo问题已更新。@revo它成功了。tnx。可以作为答案提交吗?前9个长度为10。它起作用了。谢谢,伙计,前9个长度是10。它起作用了。谢谢你,伙计。