Добрый день! Хочу создать регулярное выражение для проверки текста типа 125х250,3. Числа могут быть целые и дробные (с одним знаком после запятой), между ними "икс" или "х" (рус). По теме RegExp написал такое:
Код
\d+[,]?\d?[xх]\d+[,]?\d+
Если в первом числе после запятой знаков больше одного - до запятой все отсекает. И вообще, хочу, чтоб больше одного знака после запятой считалось ошибкой.
Михаил, здравствуйте С вас более детальное название темы по задаче "что определить" и файл-пример (с соседними столбцами "данные" и "да/нет") со всеми встречающимися ОБРАЗЦАМИ данных для тестирования решения
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Jack Famous написал: более детальное название темы по задаче "что определить"
Определить правильность ввода с помощью регулярного выражения.
Правильный вариант - текст вида: 1. Число, возможно дробное с одним знаком после запятой 2. Между ними символ "икс" или "х" (рус). 3. Число, возможно дробное с одним знаком после запятой Остальные варианты считать неправильными.
название темы: написать регулярное выражение для получения двух чисел (с разделителем запятая, или без него) соединенных х или х (латинское єкс, или кириллическая ха)
"правильность ввода" ЧЕГО? Проверить правильный ввод двух чисел со знаком умножения между ними — вот ваше название 70 сообщений, а название всё никак не придумать …
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Kuzmich, понятно, что я не проверял но писал под описание (об этом написано в моем варианте названия - числа могут быть целые и действительные (главное чтобы разделитнль целой и дробной части запятая а вообще показывайте на чем не сработало)
В случае дробного хотелось бы после запятой больше одного знака считать ошибкой.
UDF
Код
Function iRazmer(cell As String)
With CreateObject("VBScript.RegExp")
.Global = True
.Pattern = "\d+([,|\.]\d+)?[\*|x|х]\d+([,|\.]\d+)?"
If .test(cell) Then
If Len(.Execute(cell)(0).SubMatches(0)) > 2 Or Len(.Execute(cell)(0).SubMatches(1)) > 2 Then
iRazmer = "Введено больше одного знака после запятой"
Else
iRazmer = .Execute(cell)(0)
End If
Else
iRazmer = ""
End If
End With
End Function