用十进制验证价格的正则表达式

gag*_*rma 1 regex objective-c

我真的找不到正则表达式的任何解决方法来输入十进制的价格.这就是我想要的: -

12345

12345.1

12345.12

12345.123

0.123

0.123

我也想限制数字.

我真的创建了一个但没有按照假设进行验证

^([0-9] {1,5} |.([0-9] {1,5} \([0-9] {1,3})))$

还想知道上面的表达方式与一个不同

^([0-9] {1,5} |([0-9].([0-9] {1,3})))$即工作正常.

任何有很好解释的人.

"我正在使用NSRegularExpression - Objective C",如果这有助于更准确地回答

- (IBAction)btnTapped {

      NSRegularExpression * regex = [NSRegularExpression regularExpressionWithPattern:
         @"^\\d{1,5}([.]\\d{1,3})?|[.]\\d{1,3}$" options:NSRegularExpressionCaseInsensitive error:&error];

     if ([regex numberOfMatchesInString:txtInput.text options:0 range:NSMakeRange(0, [txtInput.text length])]) 
         NSLog(@"Matched : %@",txtInput.text);
     else
        NSLog(@"Not Matched : %@",txtInput.text);
}
Run Code Online (Sandbox Code Playgroud)

"我正在使用buttonTap方法".

sp0*_*00m 8

这个简单的应该适合您的需求:

\d*[.]?\d+
Run Code Online (Sandbox Code Playgroud)

"数字(\d+)之前可以加一个点([.]?),它本身可以以数字(\d*)开头."

既然你在谈价格,那么科学记数法和负数都不是必需的.


就像一个兴趣点,这是我经常使用的那个,科学符号和负数包括:

[-+]?\d*[.]?\d+(?:[eE][-+]?\d+)?
Run Code Online (Sandbox Code Playgroud)

对于新的要求(参见注释),你不能在我给出的第一个正则表达式中指定你想要的位数,因为它不是它的构建方式.

这个应该更好地满足您的需求:

\d{1,5}([.]\d{1,3})?|[.]\d{1,3}
Run Code Online (Sandbox Code Playgroud)

"最多5位数(\d{1,5})可能跟随((...)?)一个点本身后跟最多3位数([.]\d{1,3}),或(|)只是一个点后跟最多3位数([.]\d{1,3})".