float-values: Fix bug on strings containing fordidden values
The rule correctly reports number values like `.1`, `1e2`, `.NaN` and `.Inf`, but it also reported false positives on strings like `.1two3`, `1e2a`, `.NaNa` and `.Infinit∞`. The regexps need to end with an end delimiter (`$`) otherwise longer strings can be matched too. Fixes https://github.com/adrienverge/yamllint/issues/495
This commit is contained in:
@@ -107,13 +107,13 @@ DEFAULT = {
|
||||
}
|
||||
|
||||
IS_NUMERAL_BEFORE_DECIMAL_PATTERN = (
|
||||
re.compile('[-+]?(\\.[0-9]+)([eE][-+]?[0-9]+)?')
|
||||
re.compile('[-+]?(\\.[0-9]+)([eE][-+]?[0-9]+)?$')
|
||||
)
|
||||
IS_SCIENTIFIC_NOTATION_PATTERN = re.compile(
|
||||
'[-+]?(\\.[0-9]+|[0-9]+(\\.[0-9]*)?)([eE][-+]?[0-9]+)'
|
||||
'[-+]?(\\.[0-9]+|[0-9]+(\\.[0-9]*)?)([eE][-+]?[0-9]+)$'
|
||||
)
|
||||
IS_INF_PATTERN = re.compile('[-+]?(\\.inf|\\.Inf|\\.INF)')
|
||||
IS_NAN_PATTERN = re.compile('\\.nan|\\.NaN|\\.NAN')
|
||||
IS_INF_PATTERN = re.compile('[-+]?(\\.inf|\\.Inf|\\.INF)$')
|
||||
IS_NAN_PATTERN = re.compile('(\\.nan|\\.NaN|\\.NAN)$')
|
||||
|
||||
|
||||
def check(conf, token, prev, next, nextnext, context):
|
||||
|
||||
Reference in New Issue
Block a user