in reply to Why this is work?

Hi Csonytii

I'll focus on your regular expresson /([-\d]+(\d+)*)/

In your regular expression (regex) you have used the grouping construct (...) twice. Potentially that would result in a value in $1 and $2. But because you said there is only one number in one line this is probably not what you wanted. In your regex you also have used a character group []. The character group you have created means allowing '-' and any number. Then you follow with a '+' meaning one of these characters must appear followed by zero or more of the characters from the character group. (This means also a pattern line '-2-1' is allowed). The last (\d+)* does not seem to be not necessary since it is never reached in this case. The first part of your regex /([-\d]+)/ already 'kind of' does what you want. My suggestion would be something like: /([-+]?\d+)/. This allows zero or one '-' or zero or one '+' followed by a minimum of one number followed by zero or more numbers.

Replies are listed 'Best First'.
Re: Why this is work?
by Csonytii (Novice) on May 29, 2018 at 13:16 UTC

    thank you for your reply!

    now i understand what i did.