开发者

Regular Expression for Range (2-16)

I want to match a number between 2-16, spanning 开发者_如何学编程1 digit to 2 digits.

Regular-Expressions.info has examples for 1 or 2 digit ranges, but not something that spans both:

The regex [0-9] matches single-digit numbers 0 to 9. [1-9][0-9] matches double-digit numbers 10 to 99.

Something like ^[2-9][1-6]$ matches 21 or even 96! Any help would be appreciated.


^([2-9]|1[0-6])$

will match either a single digit between 2 and 9 inclusive, or a 1 followed by a digit between 0 and 6, inclusive.


With delimiters (out of habit): /^([2-9]|1[0-6])$/

The regex itself is just: ^([2-9]|1[0-6])$


Use the python package regex_engine for generating regular expressions for numerical ranges

You can install this package with pip.

pip install regex-engine
from regex_engine import generator

generate = generator()
    
regex = generate.numerical_range(2, 16)
    
print(regex)
^([2-9]|1[0-6])$

You can also generate regexes for floating point and negative ranges.

from regex_engine import generator

generate = generator()

regex1 = generate.numerical_range(5, 89)
regex2 = generate.numerical_range(81.78, 250.23)
regex3 = generate.numerical_range(-65, 12)


^([2-9]|1[0-6])$

(Edit: Removed quotes for clarification.)


Just replace your input formatters with

inputFormatters: [
                    FilteringTextInputFormatter(
                      RegExp(
                          r'^([0-9]|[2-8][0-9]|1[0-9]|9[0-9]|[2-8][0-9][0-9]|1[1-9][0-9]|10[0-9]|9[0-8][0-9]|99[0-9]|[2-4][0-9][0-9][0-9]|1[1-9][0-9][0-9]|10[1-9][0-9]|100[0-9]|500[0-0])$'),
                      allow: true,
                    )
                  ],


(^[2-9]$|^1[0-6]$)

By specifying start and stop for each set of numbers you are looking for your regex won't also return 36, 46, ... and so on. I tried the above solution and found that this works best for staying within the range of 2-16.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜