2015-05-20 3 views
0

Я пытаюсь сделать регулярное выражение в javascript, чтобы найти числа, за которыми следуют px, % или вообще нет единицы, мои вопросы - посмотреть, структура этого регулярного выражения верна.Javascript Regex, чтобы найти числа, за которыми следует 'px' или '%'

[0-9]*\.?[0-9]+(px|%)? 

Приложение будет как этот

var string = '10px, 15px, 10'; 
var regex = [0-9]*\.?[0-9]+(px|%)? 
var matches = string.match(regex); // return [ '10px', '15px', 10 ] 

Я уже проверил это, но я хочу быть уверен, что, если структура является правильным.

+5

«Преуспел», а не «предшествовал». pre = before –

+1

Разве это не вопрос для codereview.se? –

+4

Я голосую, чтобы закрыть этот вопрос как не по теме, потому что он принадлежит к codereview.se. –

ответ

4

кажется хорошо, кроме того, что вы забыли поставить регулярное выражение в регулярных выражениях кавычки, и вы, вероятно, хотите, чтобы это не было чувствительна к регистру, поэтому:

var regex = /[0-9]*\.?[0-9]+(px|%)?/i; 

Обратите внимание, что [0-9] может быть \d. Кроме того, если вы не используете группу захвата, вы можете сделать эту группу без захвата. Итак:

var regex = /\d*\.?\d+(?:px|%)?/i; 

Вы не позволяя пробельных после цифр и до px/%, но я полагаю, что это намеренно.

+1

Регулярное выражение в этом ответе работает. Я предлагаю использовать это: '/^(^ -? \ D + (?: \. \ D +)?) (. *) $ /' Это позволит вам получить как отрицательные, так и положительные числа с любым видом, если единица в конце , Пример вывода из строки в строке '-13px' равен' ["-13px", "-13", "px"] ' – pzagor2

0

Вы можете использовать следующее регулярное выражение:

var regex = /[0-9]+(?:\.[0-9]+)?(?=px|%|\b)/i; 

(?=px|%|\b) будет соответствовать номерам с последующим px, % или границы слова.

См demo

1

Насколько я понимаю, ваше регулярное выражение будет также соответствовать .2

Попробуйте это:

[0-9]+(\.[0-9]+)?(px|%)? 

Объяснение:

[0-9]+ это число

(\.[0-9]+)? является необязательной частью фракции

(px|%)? - дополнительный блок.

Кстати, вы можете использовать \d для цифр, если хотите. Некоторые скажут, что это более читаемо:

\d+(\.\d+)?(px|%)? 
+3

*" ваше регулярное выражение также будет совпадать.2 или 6p% "* Нет, чередование будет находиться между' px' и '%'. Оно будет соответствовать .2, что является допустимым числом чисел во многих контекстах. –

+0

@TJCrowder Вы правы в части чередования, просто протестировал его и сделал обновление моего ответа. –

0

Я бы написал это следующим образом.

/\d*\.?\d+(?:px|%)?/g 
Смежные вопросы