根据 phone 值正则表达式验证是否插入 +1
Validate insert +1 or not depending of phone value regex
我有一个正则表达式,所以我想在数字不是以它开头时加+1。如果它以 1 开头,它应该显示为 +1 然后 (###)-###-####
但是当数字以 1
开头时它抛出 1+1-(###)-###-####
表达式:
var formattedShipperPhone = Regex.Replace(model.Shipper.ContactPhone, @"(?:\+1[\- /]?)?([2-9]\d{2})[\- /]?([2-9]\d{2})[\- /]?(\d{4})", "+1-()--");
我如何验证 1 是否已经存在?
我不喜欢在正则表达式中使用 .*
,但在此示例中您可以尝试
".*([2-9]\d{2})[\- /]?([2-9]\d{2})[\- /]?(\d{4})"
并获得
"+1-()--"
在这种情况下,您将始终删除 (###)-###-#### 之前的内容,只需添加 +1
这是因为你在匹配 +1
,如果没有加号,你也不会匹配 1,所以它保持不变并保留在替换中。
+ 可以是可选的,你不必转义 \-
例子
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-(288)-388-4441
+1-(288)-388-4442
+1-(288)-388-4443
+1-(288)-388-4444
我有一个正则表达式,所以我想在数字不是以它开头时加+1。如果它以 1 开头,它应该显示为 +1 然后 (###)-###-####
但是当数字以 1
开头时它抛出1+1-(###)-###-####
表达式:
var formattedShipperPhone = Regex.Replace(model.Shipper.ContactPhone, @"(?:\+1[\- /]?)?([2-9]\d{2})[\- /]?([2-9]\d{2})[\- /]?(\d{4})", "+1-()--");
我如何验证 1 是否已经存在?
我不喜欢在正则表达式中使用 .*
,但在此示例中您可以尝试
".*([2-9]\d{2})[\- /]?([2-9]\d{2})[\- /]?(\d{4})"
并获得
"+1-()--"
在这种情况下,您将始终删除 (###)-###-#### 之前的内容,只需添加 +1
这是因为你在匹配 +1
,如果没有加号,你也不会匹配 1,所以它保持不变并保留在替换中。
+ 可以是可选的,你不必转义 \-
例子
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-(288)-388-4441
+1-(288)-388-4442
+1-(288)-388-4443
+1-(288)-388-4444