Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Регулярное выражение (https://javascript.ru/forum/misc/50853-regulyarnoe-vyrazhenie.html)

terminator-101 15.10.2014 17:47

danik.js,
Но это, вообще то не проблема, можно просто регуляркой лишнее обрезать, да и все. Да, на первый взгляд подходит это решение, вроде.

terminator-101 15.10.2014 18:06

Ant_Jhon,
В твоем случае, если с регуляркой, напрашивается что-то вроде такого
test=function(input){
var re=/(\d+)?\.?\d+\.?|^$/
var s=input.match(re)
if(s){if(s[0]===input){...}}
}

в s[0] вернется паттерн, например, из foo10bar вернется 10, затем сравнивается с исходной строкой, действие наступает, только если совпало, например, 10 пройдет, а 10а -- нет. Глобальный и многострочный поиски тогда не нужны, никто в инпуте не будет с этим извращаться специально, если юзер нажимает энтер или таб, он выскакивает обычно из поля ввода, аоэтому нам нужно тут только первое введенное, более ничего, иначе все чертовски усложняется.

danik.js 15.10.2014 18:09

Цитата:

Сообщение от terminator-101
Справа да, а если в середине?

Это как? Не заметить сложно.
Или типа нормализовать число, введенное в свободном формате, типа 10 000? Ну тогда и запятые надо в точки трансформировать, и мож еще чего.

terminator-101 15.10.2014 18:16

Ant_Jhon,

Вот, проверил, вроде то что тебе надо, если нет, попробуем скорректировать, если чо.

test=function(input){
var re=/(\d+)?\.?\d+\.?|^$/
var s=input.match(re)
if(s) console.log(s[0]===input)
}

test(".1f") // false
test("111") // true
test("a23") // false
test("") // true
test("10.") // true
test("1a1") // false
test(".10") // true

Только с пустым пробелом то че делать? Приравнивать его к пустой строке или нет?

Ant_Jhon 15.10.2014 18:18

вощем изнан збс работает, тут паттерны не нужны. сори за шумиху:) сдела изнаном и забыл

Ant_Jhon 15.10.2014 18:21

Пробелы можно приравнять к пустой строке, мне кажется

Ant_Jhon 15.10.2014 18:22

Терминатор, попробую протестить щас скорректированный паттерн, тот не работал

terminator-101 15.10.2014 18:26

Цитата:

Сообщение от danik.js
запятые надо в точки трансформировать, и мож еще чего

Кстати, да, если простой юзер вводит, нужно, иначе не юзабельно. Русский чел привык запятыми разделять.

terminator-101 15.10.2014 18:33

Цитата:

Сообщение от Ant_Jhon
Пробелы можно приравнять к пустой строке, мне кажется

Тогда вот такую регулярку попробуй
var re=/(\d+)?\.?\d+\.?|^(\s+)?$/
А что насчет запятых вместо точек в качестве разделителей?


Часовой пояс GMT +3, время: 12:25.