You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin中带可选前缀的电话号码正则验证:+1转义失效

电话号码正则验证解决方案

针对你需要验证的三种电话号码格式:

  • +1(061)235-663
  • 1(061)235-663
  • (061)235-663

你遇到的+1转义问题,本质是正则结构和Kotlin字符串转义细节导致的,修正后的正则如下:

val regex = """^(?:\+1|1)?\(\d{3}\)\d{3}-\d{3}$""".toRegex()

关键说明:

  1. Kotlin三重引号字符串的转义规则:三重引号属于原始字符串,正则中的元字符(如+、()只需用单个反斜杠转义即可,所以\+能正确匹配字面量+,不需要额外添加反斜杠。
  2. 正则结构优化:
    • ^ 和 $ 强制整个字符串完全匹配,避免出现部分匹配的无效情况。
    • (?:\+1|1)? 用非捕获组(?:)定义可选前缀,?表示前缀可出现0次或1次,同时支持+1、1以及无前缀的格式。
    • \(\d{3}\) 匹配带括号的三位区号,\d{3}-\d{3} 匹配后续的号码部分。

如果需要保留原有的其他验证规则(如\d{3}([-.])\d{3}\1\d{4}或\d{10}),可以把所有分支统一包裹在^和$内,避免分支间的匹配冲突:

val regex = """^(?:\d{3}([-.])\d{3}\1\d{4}|\d{10}|(?:\+1|1)?\(\d{3}\)\d{3}-\d{3})$""".toRegex()

内容的提问来源于stack exchange,提问作者Santhucool

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 00:15:44