我試圖創建一個html輸入標籤,它只接受以2種格式之一輸入的數字,並拒絕所有其他輸入。爲什麼我得到:「無效的正則表達式。未捕獲的SyntaxError。無效的轉義。」?
我想只有這些格式接受的數字,包括要求破折號:
1234-12
和
1234-12-12
注:這不是日期,而是法律的章節編號
我正在閱讀的有關正則表達式的一切都表示,以下內容應該可行,但事實並非如此。
<input class="form-control"
type="text"
pattern="^(\d{4}\-\d{2}\-\d{2})|(\d{4}\-\d{2})$"
required />
Devtools控制檯錯誤在Chrome:
Pattern attribute value
^(\d{4}\-\d{2}\-\d{2})|(\d{4}\-\d{2})$
is not a valid regular expression: Uncaught SyntaxError: Invalid regular expression: /^(\d{4}-\d{2}-\d{2})|(\d{4}-\d{2})$/: Invalid escape
用'-'替換'\ -'。 –
因爲你的正則表達式中有一個無效的轉義,你會得到「無效轉義」。在字符類('[]')之外,'-'沒有特殊含義。所以'\ -'是無效的轉義。 –
@ T.J.Crowder:我認爲這裏令人困惑的部分是'/ \ - /'是JS中的合法正則表達式,而'/ \ -/u'則不是。通常(即幾乎無處不在)的身份轉義並不是一個錯誤,而是允許的,即使嚴格沒有必要。 – Joey