Для этого на самом деле не нужно регулярное выражение, поскольку простая итерация и сравнение каждого символа от 0 до 9 (или вызов статического метода IsNumber в структуре Char ) сделает это (извините за код C #, его легко перевести на VB.NET):
static IEnumerable<char> GetNumericCharacters(this string s)
{
// Check for null.
if (s == null) throw new ArgumentNullException("s");
// Iterate through the characters.
foreach (char c in s)
{
// If a number, return it.
if (char.IsNumber(c)) yield return c;
}
}
Конечно, регулярное выражение так же просто:
[0-9]
Вы можете использовать класс RegEx, чтобы получить все совпадения для этого шаблона и объединить их вместе.
Единственное время, когда каждое из этих решений дает сбой, - это когда у вас несколько номеров в разных контекстах, например ::
"Пользователь купил 10 предметов по $ 0,99 каждый"