Регулярный экспресс для таких шаблонов, как 1.1, 2.-1, 2.3.30

1

Я ищу регулярное выражение (которое будет использоваться в javascript), которое может соответствовать следующим правилам,

  1. он состоит из 0 или более частей
  2. каждая часть - это число. если он положительный, он вроде 123. если отрицательный, он, как -123
  3. части соединены/разделены точкой (.)

/^(-?[0-9]*\.?)*$/g - это то, что у меня есть, но оно соответствует чем-то вроде 1.1-1 которое считается незаконным.

например, рассмотренные юридические 1, 1.1, 1. -3, 1. -3.- 4.5

например, те, которые считаются незаконными 1.1-1

Теги:

2 ответа

1
Лучший ответ

Неясно, ищете ли вы соответствие частей неправильной строки "1.1-1" или нет, но если да, это должно позволить вам получить то, что вы ищете.

По существу, я дублировал первую подгруппу совпадений и делал последующие подгруппы факультативными с?

(-?\d+)((\.(-?\d+))+)?

Если вы хотите совместить первую часть любой строки, которая неверна, вот один из них:

^-?\d+(\.(-?\d+))*

Вот эскиз Regexer.

  • 0
    Благодарю. работает как шарм!
0

/^-?\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));
});

Пример Regex101.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню