Я вообще не использовал регулярные выражения, поэтому у меня возникают проблемы с устранением неполадок. Я хочу, чтобы регулярное выражение совпадало только тогда, когда содержащаяся строка содержит все числа; но с двумя примерами ниже это соответствует строке, которая содержит все числа плюс знак равенства, такой как «1234 = 4321». Я уверен, что есть способ изменить это поведение, но, как я уже сказал, я никогда особо ничего не делал с регулярными выражениями.
string compare = "1234=4321";
Regex regex = new Regex(@"[\d]");
if (regex.IsMatch(compare))
{
//true
}
regex = new Regex("[0-9]");
if (regex.IsMatch(compare))
{
//true
}
В случае, если это имеет значение, я использую C # и .NET2.0.
Ответы:
Используйте начальный и конечный якоря.
Используйте,
"^\d+$"
если вам нужно сопоставить более чем одну цифру.Обратите внимание, что
"\d"
будут совпадать[0-9]
и другие цифры, такие как восточно-арабские цифры٠١٢٣٤٥٦٧٨٩
. Используйте"^[0-9]+$"
для ограничения совпадений только арабскими цифрами 0 - 9.Если вам нужно включить любые другие , чем просто цифры (например , десятичные значения для начала) числовых представлений, то см @tchrist «s полного руководства по разбору чисел с регулярными выражениями .
источник
"^\d{6}$"
. В некоторых других странах существуют более сложные правила для почтовых индексов, поэтому решения для регулярных выражений для нескольких стран также могут быть довольно сложными. Посмотрите некоторые примеры на stackoverflow.com/q/578406/1288Ваше регулярное выражение будет соответствовать всему, что содержит число, вы хотите использовать якоря для соответствия всей строке, а затем соответствовать одному или нескольким числам:
Привязка
^
будет привязывать начало строки, она$
будет привязывать конец строки, и+
будет соответствовать одному или нескольким из предшествующих ему символов (в данном случае это число).источник
Если вам нужно терпеть десятичную точку и тысячу маркеров
Вам понадобится «-», если число может стать отрицательным.
источник
-
) и period (.
) более одного раза.-
и по.
желанию через?
.-?\d+(?:\.\d+)?
будет соответствовать целым или десятичным числам. (Символ «?:
в паранах» просто делает их не захватывающими группами и используется только для ясности.)^-?[0-9][0-9,\.]*$
избежать сбоев в базовом случае. + заменено на *Это соответствие, потому что оно находит "совпадение", а не совпадение полной строки. Вы можете исправить это, изменив регулярное выражение, чтобы специально искать начало и конец строки.
источник
Возможно, мой метод поможет вам.
источник
Char.IsDigit
возвращаетtrue
для любого символа, который является членом категории UnicodeCategory.DecimalDigitNumber . Это может быть не то, что хочет ОП. Также см. Почему Char.IsDigit возвращает true для символов, которые не могут быть проанализированы в int? ,Это работает с целыми числами и десятичными числами. Это не совпадает, если число имеет разделитель запятой,
некоторые строки, которые соответствуют этому:
некоторые строки, которые не:
источник
^ \ d + $, что по-английски означает «начало строки», «1 или более цифр», «конец строки».
источник
Если вам нужно проверить, все ли цифры числа (0-9) или нет,
1425 ИСТИНА
0142 ИСТИНА
0 ИСТИНА
1 ИСТИНА
154a25 ЛОЖЬ
1234 = 3254 ЛОЖЬ
источник
Вот мой рабочий:
И некоторые тесты
Положительные тесты:
Отрицательные тесты:
Проверено не только на C #, но и на Java, Javascript и PHP
источник
Извините за уродливое форматирование. Для любого количества цифр:
Для одной или нескольких цифр:
источник
Хотя ни одно из перечисленных выше решений не соответствовало моей цели, это сработало для меня.
Пример допустимых значений: "3", "-3", "0", "0.0", "1.0", "0.7", "690.7", "0.0001", "-555", "945465464654"
Пример недопустимых значений: "a", "", "", ".", "-", "001", "00.2", "000.5", ".3", "3.", "-1" , "--1", "-.1", "-0", "00099", "099"
источник
Другой способ: если вам нравится сопоставлять международные номера, такие как персидский или арабский, вы можете использовать следующее выражение:
Чтобы соответствовать буквенному символу точки, используйте:
источник
используйте начальный и конечный якоря.
источник
Регулярное выражение для целых чисел и чисел с плавающей точкой:
Номер может начинаться с точки (без начальных цифр (ов)), а номер может заканчиваться точкой (без конечных цифр (й)). Выше регулярное выражение будет распознавать как правильные числа.
А. (точка) без каких-либо цифр не является правильным числом. Вот почему нам нужны две части регулярных выражений (разделенные "|").
Надеюсь это поможет.
источник
Я думаю, что этот самый простой, и он принимает европейский и американский способ написания чисел, например, США 10 555,12 европейский 10 555,12 Также этот не допускает использование нескольких запятых или точек друг за другом, например, 10..22 или 10, .22 В дополнение к этим числам как .55 или, 55 пройдет. Это может быть удобно.
источник
Если вы хотите извлечь только числа из строки, шаблон "\ d +" должен помочь.
источник
Regex regex = new Regex ("^ [0-9] {1,4} = [0-9] {1,4] $")
источник