Функция Javascript, включающая использование регулярных выражений - PullRequest
1 голос
/ 14 февраля 2010

Я разрешаю пользователю вводить размеры поля через поля формы. допустимые значения:

  1. целых положительных чисел
  2. должно заканчиваться на px или%

Примеры допустимых чисел: 300px или 70%

Кроме того, я хочу добавить дополнительную логику проверки:

Если введенное значение в процентах, то число должно лежать в диапазоне 0> x <= 100 </p>

Если введенное число в пикселях, я хочу иметь возможность сверяться с жестко заданными минимальными и максимальными значениями.

Мое знание регулярных выражений довольно скудное, так как я не использовал его много лет.

Я думаю о написании набора вспомогательных функций, таких как:

// returns true if value ends in px or % [with no spaces], false otherwise
function is_scale_valid(value){
}

//returns 'px', '%' or undefined 
function get_scale_type(value){
}

// called after is_scale_valid, to ensure we are dealing with
// a +ve integer that falls in desired range. This function 
// strips away the 'scale' part of the value and only looks 
// at the number
function is_valid_number(value, scaletype, valid_min, valid_max){
}

Может кто-нибудь помочь мне заполнить эти вспомогательные функции?

1 Ответ

2 голосов
/ 14 февраля 2010

Требуемое регулярное выражение:

var r = new RegExp("^\\s*(\\d+(?:\\.\\d+)?)\\s*(px|%)?\\s*$");

Это выражение означает:

  • Разрешить начальные и конечные пробелы (\s);
  • Номер состоит из одной или нескольких цифр, за которыми следует точка и одна или несколько цифр;
  • Единицами измерения могут быть «px», «%» или не указывать.

Вам нужно будет вручную проверить введенный номер из этого.

var match = r.exec("93px");
var number = parseFloat(match[1]);
var symbol = match[2];
if (symbol == "px") {
  // validate number as a pixel
} else if (symbol == "%") {
  // evaluate as percentage
} else {
  // no symbol was entered
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...