我正在嘗試構(gòu)建一個(gè)正則表達(dá)式來匹配應(yīng)包含 9 位數(shù)字的字段
我使用下面的正則表達(dá)式
/^\d{9,9}$/
現(xiàn)在,問題是在做的時(shí)候
/^\d{9,9}$/.test("123456789") //returns true
但是,當(dāng)我嘗試使用 Yup 的匹配項(xiàng)使用相同的正則表達(dá)式(在下面的 myRegex 中傳遞)時(shí)
'myField': yup .string() .nullable() .required('Field is required') .max(9, `Max length 9`) .matches(myRegex, { message: 'Field is invalid', }),
對(duì)于相同的輸入,我收到無效消息,即 123456789
只是想知道為什么會(huì)這樣?
更新: 是的,使用 value.search(regex) ,因此,就我而言,它運(yùn)行“123456789”.search(/^\d{9,9}$/)
不確定以上是否是問題所在?
似乎您的解決方案使用了錯(cuò)誤的正則表達(dá)式
當(dāng) Yup 的 search() 方法與正則表達(dá)式一起使用時(shí),就會(huì)出現(xiàn)問題。 search() 方法返回第一個(gè)匹配項(xiàng)的索引,并且不計(jì)算完整字符串。
由于“123456789”連續(xù)包含9位數(shù)字,因此滿足正則表達(dá)式,search()方法返回第一次出現(xiàn)的索引,即0。由于0是真值,所以Yup將其解釋為失敗的匹配并返回?zé)o效消息。
這是您可以嘗試使用 /^\d{9}$/
的正則表達(dá)式
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號(hào)
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)