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

LeetCode 193有效电话号码正则表达式为何失效?加^$才通过?

LeetCode 193. Valid Phone Numbers grep脚本问题解析

为什么必须指定整行匹配?

LeetCode 193的核心要求是筛选出文件中整行完全符合格式的电话号码,而非提取行内的合法号码片段。

第一个脚本没有^(行首)和$(行尾)锚点,grep会匹配行内任意位置的符合模式的子字符串——哪怕行首/行尾有多余字符,或者一行里包含多个号码片段,都会被错误识别为有效结果。而添加锚点后,只有当整行内容完全匹配电话号码格式时才会被选中,严格贴合题目对“有效电话号码行”的定义。

第一个脚本失败的测试用例

测试用例文件 file.txt 内容:

(123) 456-7890 多余文本
123-456-7890abc
abc(123) 456-7890
123-456-7890 987-654-3210

第一个脚本的错误输出:

(123) 456-7890
123-456-7890
(123) 456-7890
123-456-7890
987-654-3210

这些输出里的行都不符合“整行是有效电话号码”的要求,但被错误提取了。

第二个脚本的正确输出:

无任何输出(因为所有行都包含多余内容或多个号码,没有纯电话号码行),完全符合题目预期。

另一个更直观的测试用例行:

(123) 456-7890x

第一个脚本会错误提取(123) 456-7890,而第二个脚本会正确忽略这一行——因为行尾的x导致整行不符合格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 15:17:10