首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >验证insert +1是否取决于电话值正则表达式

验证insert +1是否取决于电话值正则表达式
EN

Stack Overflow用户
提问于 2022-05-27 18:18:01
回答 2查看 37关注 0票数 0

我有一个正则表达式,所以当数字不以它开头时,我想添加+1。如果它以1开头,它应该显示为+1,然后显示为(###)-###-####

但是,当数字以1开头时,它将抛出1+1-(###)-###-####

表达方式:

代码语言:javascript
复制
 var formattedShipperPhone = Regex.Replace(model.Shipper.ContactPhone, @"(?:\+1[\- /]?)?([2-9]\d{2})[\- /]?([2-9]\d{2})[\- /]?(\d{4})", "+1-($1)-$2-$3");

如果1已经有了,我如何验证它?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-05-27 20:09:02

这是因为你是匹配的+1,如果没有加号,你也将不匹配的1,所以它是未触及的,并留在替换。

+可以是可选的,您不必转义\-

示例

代码语言:javascript
复制
var strings = new List<string>() {
    "+1-288-388-4441",
    "+1288-388-4442",
    "1288-388-4443",
    "288-388-4444",
};
            
foreach (var s in strings)
{
    Console.WriteLine(
        Regex.Replace(
            s, 
            @"(?:\+?1[- /]?)?([2-9]\d{2})[- /]?([2-9]\d{2})[- /]?(\d{4})", 
            "+1-($1)-$2-$3")
        );
}

输出

代码语言:javascript
复制
+1-(288)-388-4441
+1-(288)-388-4442
+1-(288)-388-4443
+1-(288)-388-4444
票数 1
EN

Stack Overflow用户

发布于 2022-05-27 19:19:07

我不喜欢在regex中使用.*,但在本例中您可以尝试

代码语言:javascript
复制
".*([2-9]\d{2})[\- /]?([2-9]\d{2})[\- /]?(\d{4})"

并获取

代码语言:javascript
复制
"+1-($1)-$2-$3"

在这种情况下,您将始终删除(###)-#-#之前的内容,然后添加+1。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72409576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档