车号的正则表达式

Regex for car number

提问人:Rey 提问时间:10/19/2023 最后编辑:Rey 更新时间:10/19/2023 访问量:56

问:

下午好,我需要一个掩码,以便用户可以在开头输入:1 - 字母,3 - 连续数字,2 个字母,一个空格,2 或 3 位数字。键入 A111AA 777 或 C111TY 45 格式。我总是用任何字母都是错误的:

    const [carNumber, setCarNumber] = useState('') 
<input
                                            type="text"
                                            name="name"
                                            placeholder="A001AA 01"
                                            required
                                            value={carNumber}
                                            onChange={event => {
                                      
                                                const value = event.target.value.toUpperCase();
                                                console.log(value)
                                            
                                                const regex = /^[АВЕКМНОРСТУХABEKMHOPCTYX]?\d{0,3}[АВЕКМНОРСТУХABEKMHOPCTYX]?\s?\d{2,3}$/ui;
                                                const answer = regex.test(value)
                                                console.log(answer)
                                         
                                                if (regex.test(value) || value === '') {
                                                    setCarNumber(value);
                                                }
                                            }}
                                        />

我写对了,但我没有得到任何输入。可能是什么错误?

JavaScript ReactJS 正则表达式 验证

评论

1赞 Jay 10/19/2023
“2 个字母”但是 - 你不是说吗?[АВЕКМНОРСТУХABEKMHOPCTYX]?[АВЕКМНОРСТУХABEKMHOPCTYX]{2}
1赞 Jay 10/19/2023
也是“连续 3 位数字”,但您的正则表达式显示“至少 0 位数字,最多连续 3 位数字”。那么它是什么?:P
0赞 DuesserBaest 10/19/2023
^[A-Z]\d{3}[A-Z]{2}\s\d{2,3}$试试这个吧?
1赞 Wiktor Stribiżew 10/19/2023
正确,由于您在更改上添加了正则表达式检查,因此您无法输入任何内容,因此您需要确保即使是部分匹配也通过了验证。我认为您可以在此代码中使用的唯一模式是/^[АВЕКМНОРСТУХABEKMHOPCTYX](?:\d{1,3}(?:[АВЕКМНОРСТУХABEKMHOPCTYX]{1,2} ?\d{0,3})?)?$/i

答: 暂无答案