2014-11-14 3 views
2

В настоящее время я использую JavaScript для получения строки из поля, в этом поле обычно будет;Regular Expression Issue - Поиск чисел в строке

«Ширина = 56 Пустота = 67»

Что мне нужно сделать, это определить две цифры, которые могут быть между диапазоном 1-440 и поместить их в двух различных областях, которые

поле 1 = Ширина поле 2 = Void

Я посмотрел в регулярное выражение, которое до сих пор позволит мне определить, какую позицию цифра в использовании поиска() метод, но это на самом деле не делать то, что я требую

Есть ли у кого ny рекомендации?

+1

Рассматривали ли вы разбивку на два поля? Это будет легче обрабатывать и, вероятно, приведет к меньшему количеству ошибок ввода пользователя. –

+0

Как только вы получите цифры из поля, вам, вероятно, придется просто использовать JS для проверки их диапазона и добавления их в поля. Regex действительно предназначен для поиска строк. –

ответ

4

Regex являются жадными, так что вы можете сделать:

var str = 'Width = 56 Void = 67'; 
    var a = str.match(/\d+/g); 

Затем можно проверить значения а, чтобы увидеть, если они соответствуют, и если они находятся в вашем диапазоне ожидаемых чисел, а теперь является массивом [ "56", 67" ];

+1

Отлично работает, спасибо, теперь просто разбить массив и поместить два значения в текстовые поля – Sjharrison

1

Попробуйте это регулярное выражение:

Width = (\d+) Void = (\d+) 

Ваш код JavaScript для разбора строки будет выглядеть следующим образом:

var regex = /Width = (\d+) Void = (\d+)/; 
var match = regex.exec("Width = 56 Void = 67"); 
var field1 = parseInt(match[1], 10); // 56 
var field2 = parseInt(match[2], 10); // 67 

Вы хотите добавить проверку ошибок, но это неотъемлемая часть.

Удачи вам!

+0

Спасибо за ваш ответ! предыдущий ответ сделал то, что требовалось, но я проверю это позже, чтобы узнать, работает ли оно, спасибо – Sjharrison

+0

Спасибо @Robert за то, что я нашел свою опечатку –