[英]Invalid Group with Regex Expression in Javascript
我四處尋找我的問題的解決方案,但我看不出我的正則表達式的哪一部分無效(javascript說我有一個無效的組)。 我想我正在使用javascript的正則表達式引擎不支持的東西?
我正在嘗試驗證以下美國電話號碼:
555-555-5555
(555)555-5555
(555) 555-5555
555 555 5555
5555555555
1 555 555 5555
我的驗證表達是:
1?[\s-]?\(?(\d{3})\)?[\s-]?(\d{3})[\s-]?(\d{4})
有小費嗎?
/1?[\\s-]?\\(?(\\d{3})\\)?[\\s-]?(\\d{3})[\\s-]?(\\d{4})/
作品很好的JavaScript。
但是,我的水晶球說你正在使用一個你傳遞給RegExp
構造函數的字符串:
new RegExp("1?[\s-]?\(?(\d{3})\)?[\s-]?(\d{3})[\s-]?(\d{4})")
這是錯誤的,因為反斜杠在字符串中有特殊含義,所以
"1?[\s-]?\(?(\d{3})\)?[\s-]?(\d{3})[\s-]?(\d{4})"
相當於
"1?[s-]?(?(d{3}))?[s-]?(d{3})[s-]?(d{4})"
(因為"\\("
是"("
)。那會抱怨(?(
。
解決方案:使用正則表達式文字( /.../
)或在字符串中加倍反斜杠。
你試過下面的嗎?
^\([0-9]{3}\)[0-9]{3}-[0-9]{4}$
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.