Я ищу регулярное выражение (которое будет использоваться в javascript), которое может соответствовать следующим правилам,
/^(-?[0-9]*\.?)*$/g
- это то, что у меня есть, но оно соответствует чем-то вроде 1.1-1
которое считается незаконным.
например, рассмотренные юридические 1, 1.1, 1. -3, 1. -3.- 4.5
например, те, которые считаются незаконными 1.1-1
Неясно, ищете ли вы соответствие частей неправильной строки "1.1-1" или нет, но если да, это должно позволить вам получить то, что вы ищете.
По существу, я дублировал первую подгруппу совпадений и делал последующие подгруппы факультативными с?
(-?\d+)((\.(-?\d+))+)?
Если вы хотите совместить первую часть любой строки, которая неверна, вот один из них:
^-?\d+(\.(-?\d+))*
Вот эскиз Regexer.
/^-?\d+(\.-?\d+)*$/
:
^ : start
-? : '-' (optional)
\d+ : digits (at least one)
(\.-?\d+)* : you can make it a non-capturing group if you want (?:\.-?\d+)*
\. : '.'
-? : '-' (optional)
\d+ : digits (at least one)
* : match this group one or more times
$ : end
Ищите действительное число в начале (^-?\d+
), затем найдите a .
за которым следует действительное число, соответствуют как можно (\.-?\d+)*
((\.-?\d+)*
).
Пример:
var tests = "1,-1,-1.-33,1.-4.-5.7,.1,1.,-1-1,1.5-7-8,1..1".split(','),
regex = /^-?\d+(\.-?\d+)*$/;
tests.forEach(function(t) {
console.log(t, " ===> ", regex.test(t));
});