簡體   English   中英

不能對正則表達式設置限制

[英]can not set limit on regex

我有一個名為vatValidate函數,用於驗證用戶輸入的增值稅格式。 目前,它作為默認情況對奧地利和意大利這兩個國家/地區進行驗證。 對於每個,我使用正則表達式為相關的增值稅格式指定了預期的用戶輸入序列。

 function vatValidate() { let vatFormat; let countryCode = document.getElementById('countries').value; switch (countryCode) { case 'Austria': countryCode = 'AT'; vatFormat = /[U]{1}[0-9]{8}/; break; default: countryCode = 'IT'; vatFormat = /[0-9]{11}/; } let vatNumber = document.getElementById('pivaid').value; let vat = countryCode + vatNumber; if (vatFormat.test(vat)) { console.log('Correct'); } else { console.log('Error'); } } vatValidate()

如果用戶輸入與預定義序列匹配,則該函數記錄true else false 它工作正常,但問題是,我定義的正則表達式代碼並沒有強制執行序列的長度。 當我研究這樣做時,例如對於奧地利,我必須使用^$定義正則表達式,結果為: /^[U]{1}[0-9]{8}$/

顯然這應該可以正常工作,因為我在 regex101.com 中驗證了它,可以在下面看到:

奧地利案例的正則表達式代碼驗證

現在的問題是,一旦我在代碼中添加^$ ,它就不再起作用,它只會記錄一個錯誤! 我的開發環境是 Laravel,這段代碼在刀片內的腳本標簽中執行。

使用這個正則表達式表達式解決了奧地利的問題:

/^[A]{1}[T]{1}[U]{1}[0-9]{8}$/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM