如何调整JS正则匹配规则仅提取电话号码而非日期?
解决JavaScript正则误将日期识别为电话号码的问题
你的正则表达式/[0-9]+-[0-9]+-[0-9]{2,}/没有限定各段数字的长度,所以会把4-2-2格式的日期也当成符合规则的匹配项。要只匹配目标电话号码(3-3-4格式),可以修改正则为:
phone = htmlCode.match(/\b\d{3}-\d{3}-\d{4}\b/)[0];
改动说明:
\b:单词边界,确保匹配的是独立完整的号码,不会被其他字符干扰\d{3}:指定前两段必须是3位数字,对应电话号码的区号和中间段\d{4}:指定最后一段必须是4位数字,对应电话号码的尾号
这样修改后,只会匹配517-156-4435,而2002-01-23因为是4-2-2的格式,不符合正则规则,就不会被误匹配了。如果需要适配其他格式的电话号码,只需调整各段\d后面的数字长度即可。
内容的提问来源于stack exchange,提问作者Peterson Rainey
相关产品推荐
相关产品推荐

