我有一个正则表达式,所以当数字不以它开头时,我想添加+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-$3");如果1已经有了,我如何验证它?
发布于 2022-05-27 20:09:02
这是因为你是匹配的+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)-$2-$3")
);
}输出
+1-(288)-388-4441
+1-(288)-388-4442
+1-(288)-388-4443
+1-(288)-388-4444发布于 2022-05-27 19:19:07
我不喜欢在regex中使用.*,但在本例中您可以尝试
".*([2-9]\d{2})[\- /]?([2-9]\d{2})[\- /]?(\d{4})"并获取
"+1-($1)-$2-$3"在这种情况下,您将始终删除(###)-#-#之前的内容,然后添加+1。
https://stackoverflow.com/questions/72409576
复制相似问题