允许正则表达式中的数字,包括负数

时间:2015-08-24 09:00:49

标签: javascript jquery regex negative-number

我写了这个正则表达式来删除任何不是数字的东西。

- (instancetype)init{
        self = [super init]; // <--- should go first

        self = (Subclass*)[[SVGKLayeredImageView alloc] initWithSVGKImage:[SVGKImage imageNamed:@"SomeFile.svg"]];

        // self.imageSVG = [SVGKImage imageNamed:@"SomeFile.svg"];
        [self sizeToFit];
        self.userInteractionEnabled = YES;

        return self;
}

它转换&#34; abc123xyz&#34;到&#34; 123&#34;

但是现在我想覆盖负数: -

     var dataTest = data.replace(/[^0-9]/gi, '');

但它允许 - 介于两者之间。 它转换了&#34; abc123-xyz&#34;到&#34; 123 - &#34; 我希望它转换为&#34; 123&#34;

但是,如果用户给出&#34; -123abc&#34; ,它应该改为&#34; -123&#34;。

我在javascript中的focusout事件上调用此代码。我也会在jquery中接受解决方案。

1 个答案:

答案 0 :(得分:6)

一种选择是捕获数字并删除其他所有内容:

input = "abc-123def"

clean = input.replace(/.*?(-?\d+).*/, "$1")

document.write(clean)

或更高效地使用match

 clean = (input.match(/-?\d+/) || [])[0]