Страницы: 1
RSS
Проверить правильный ввод двух чисел со знаком умножения между ними
 
Добрый день!
Хочу создать регулярное выражение для проверки текста типа 125х250,3. Числа могут быть целые и дробные (с одним знаком после запятой), между ними "икс" или "х" (рус).
По теме RegExp написал такое:
Код
\d+[,]?\d?[xх]\d+[,]?\d+

Если в первом числе после запятой знаков больше одного - до запятой все отсекает. И вообще, хочу, чтоб больше одного знака после запятой считалось ошибкой.
Изменено: vikttur - 20.08.2021 16:05:46
 
Михаил, здравствуйте
С вас более детальное название темы по задаче "что определить" и файл-пример (с соседними столбцами "данные" и "да/нет") со всеми встречающимися ОБРАЗЦАМИ данных для тестирования решения
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Jack Famous написал:
более детальное название темы по задаче "что определить"
Определить правильность ввода с помощью регулярного выражения.

Правильный вариант - текст вида:
1. Число, возможно дробное с одним знаком после запятой
2. Между ними символ "икс" или "х" (рус).
3. Число, возможно дробное с одним знаком после запятой
Остальные варианты считать неправильными.
 
название темы:
написать регулярное выражение для получения двух чисел (с разделителем запятая, или без него) соединенных х или х (латинское єкс, или кириллическая ха)

ответ:
[0-9,]+[xх][0-9,]+
Изменено: Ігор Гончаренко - 20.08.2021 16:10:04
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Михаил: правильность ввода
"правильность ввода" ЧЕГО?
Проверить правильный ввод двух чисел со знаком умножения между ними — вот ваше название
70 сообщений, а название всё никак не придумать …

По вопросу
Изменено: Jack Famous - 20.08.2021 16:04:17
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Ігор Гончаренко,
А как быть с условием ТС
Цитата
Числа могут быть целые и дробные (с одним знаком после запятой),
 
Kuzmich,
понятно, что я не проверял но писал под описание (об этом написано в моем варианте названия - числа могут быть целые и действительные (главное чтобы разделитнль целой и дробной части запятая
а вообще показывайте на чем не сработало)
Изменено: Ігор Гончаренко - 20.08.2021 16:28:43
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Ігор Гончаренко написал:
ответ:[0-9,]+[xх][0-9,]+
Ответ хорош, но число может быть целое или дробное. В случае дробного хотелось бы после запятой больше одного знака считать ошибкой.
Изменено: Михаил - 25.08.2021 13:37:34
 
Цитата
В случае дробного хотелось бы после запятой больше одного знака считать ошибкой.
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
 
Kuzmich, Спасибо, работает!
Страницы: 1
Наверх