Я получаю некоторые строки в следующем формате:Регулярное выражение не работает
"tel:+441234567890;ext=7890"
Чтобы извлечь различные числа, я обычно использую эти регулярные выражения, возвращающие представленный вывод:
ParseTelephoneNumber
public static string ParseTelephoneNumber(string rawInput)
{
var temp = Regex.Replace(rawInput, ";.*", "");
return Regex.Replace(temp, ".*:", "");
}
+441234567890
ParseExtension
public static string ParseExtension(string rawInput)
{
return Regex.Replace(rawInput, ".*=", "");
}
Это, кажется, работает хорошо в обоих Visual Studio 2012
и Visual Studio 2015
.
Однако, если этот код работает в VS 2012
как часть кода для InfoPath 2013
формы, я вижу эти результаты:
ParseExtension
тел: +441234567890
ParseTelephoneNumber
+441234567890
В чем причина этого? Использует ли InfoPath
другой двигатель для расчета регулярных выражений?
'Regex' является частью .NET. InfoPath не меняет своего поведения. Вы уверены, что то, что вы видите на экране, является тем, что передается методу? Возможно ли, например, введенная строка HTML? –