Как мне сопоставить и вернуть ноль с регулярным выражением в JavaScript? - PullRequest
0 голосов
/ 28 мая 2010

Я пытаюсь извлечь число из строки. Число может быть нулевым. Числа выглядят так: «+123», «-8» или «0».

alert( '+123'.match(/[-?|+?]\d+/) );
alerts +123

alert( '-8'.match(/[-?|+?]\d+/) );
alerts -8

alert( '0'.match(/[-?|+?]\d+/) );
alerts null // why oh why?

Как мне получить '0'.match (/ [-? | +?] \ D + /), чтобы вернуть 0 вместо нуля?

Ответы [ 2 ]

6 голосов
/ 28 мая 2010

Узор

[-?|+?]

будет соответствовать ровно одному -, +, | или ?. То, что вы хотите, это

[-+]?

, который будет соответствовать - или + один или ноль раз.

Это также позволит проходить числа типа '123'. Если вам требуется знак +, используйте это:

/0|[-+][1-9]\d*/
0 голосов
/ 28 мая 2010

Здесь

var rePattern = /[+-]?\d+/;

"0".match(rePattern) // 0
"+44".match(rePattern) //+44
"-3".match(rePattern) //-3

Обратите внимание, что это не так строго, как у Кенни

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...