Unterschiede im Verhalten regulärer Ausdrücke
P粉996763314
P粉996763314 2024-04-01 13:33:29
0
1
356

Ich versuche, einen regulären Ausdruck zu erstellen, der Feldern entspricht, die 9 Ziffern enthalten sollten

Ich verwende den folgenden regulären Ausdruck

/^\d{9,9}$/

Das Problem liegt nun darin, es zu tun

/^\d{9,9}$/.test("123456789") //returns true

Wenn ich jedoch versuche, die Übereinstimmungen von Yup mit demselben regulären Ausdruck zu verwenden (der unten in myRegex übergeben wird),

'myField': yup
            .string()
            .nullable()
            .required('Field is required')
            .max(9, `Max length 9`)
            .matches(myRegex, {
                message: 'Field is invalid',
            }),

Für die gleiche Eingabe erhalte ich eine ungültige Meldung, z. B. 123456789

Ich frage mich nur, warum das passiert?

Update: Ja, verwenden Sie value.search(regex) , also läuft es in meinem Fall „123456789“.search(/^d{9,9}$/)

Sie sind sich nicht sicher, ob das oben genannte Problem vorliegt?

P粉996763314
P粉996763314

Antworte allen(1)
P粉362071992

似乎您的解决方案使用了错误的正则表达式

当 Yup 的 search() 方法与正则表达式一起使用时,就会出现问题。 search() 方法返回第一个匹配项的索引,并且不计算完整字符串。

由于“123456789”连续包含9位数字,因此满足正则表达式,search()方法返回第一次出现的索引,即0。由于0是真值,所以Yup将其解释为失败的匹配并返回无效消息。

这是您可以尝试使用 /^\d{9}$/ 的正则表达式

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage