Binary computation using Regex in Javascript - javascript

I am having trouble figuring these questions out.
I want to use regex in JS to do this.
1.All binary strings of odd length containing alternating 0's and 1's.
2.All binary strings over 0 and 1 representing numbers greater than 5 when interpreted as binary numbers.
3.All binary strings over 0 and 1 representing numbers which are evenly divisible by 4 when interpreted as binary numbers.
4.All binary strings of length less than or equal to 5 containing only 0's and 1's where the number of 0's is equal to the number of 1's.
Any help is greatful.

I think that RegExps aren't the best solutions to your problems, but here they are:
\b(1(01)*|0(10)*)\b try in regexr
\b([01]*11[01]|0*1+[01]*[01]{3})\b try in regex
\b[01]*00\b try in regexr
\b((01|10){1,2}|0011|1100)\b try in regexr

I split this into 4 Regexes to easier understand:
1.
^(?:(?:10)+1|(?:01)+0)+$
This matches one or more of '01' or '10', followed by the opposite char, repeated one or more times.
2.
[01]{4,}$
This simply checks that the number ends with 4 binary digits.
3.
[01]*0{2,}$
This makes sure the number ends with 2 zeros.
4.
^(01|10|0011|0101|0110|1001|1010|1100)$
This simply OR's the different possibilities. Since there has to be equal zeros and '1' there can only be 2 or 4 digits in the number.
If you need it all in one regex you can propably OR them all together.

Related

Javascript length limit of regex with given decimal conditions

I could make Javacsript regex with 2 decimal points with 3 integer but the thing is I have to make it 6 digits total including the decimal "dot".
So this result should be a minimum 0 to 999.99 with the condition it's a minimum 0 to 6 digit length.
Below is my solution So far:
^(\d{0}(?:\d{1,3})|\d{1}\.(?:\d{1,2})|\d{2}\.(?:\d{1,2})|\d{3}\.(?:\d{1,2}))$
Explanation:
If it's 0 digits, then min 1 to 3 digits so I can make it max 999.
If it's 1 digit w/ decimal then max 2 decimal points (ex) 2.22
If it's 3 digits w/ decimal then max 2 decimal points. (ex) 3.33
This is for regex in my JSP input (which is text type) and I'm literally suffering for this problem for days.
(this regex is for versions to be specific..)
Any help or better alternative way would help me A LOT.
google search, try by myself, online course, Youtube
If I get it well: you need to match a decimal with a length of 6 including the decimal point.
The following can do:
^(\d{1,3}(?:\.\d{1,2})?)$
It specified a integer part up to 3 digits, then an optional decimal part.
It has some edge cases of course such as matching: 000.00 which can be cleaned up further if needed depending on your expected input.
Sample: https://regex101.com/r/LrOHvt/1

How to write the regexp to accept infinite numbers?

I have one regexp which is finding only 2 digit numbers. I'm trying with \#break:[0-9][0-9]\s\minutes this regexp. It has only 2 digits. How I can rewrite this to detect any number even it 5 or 6 digits.
/\d+/ should do the trick.
"d" is the symbol for digits and "+" tells it to accept one or more.
Try it with d+ as Kevin said: \#break:\d+\s\minute
Or if you exactly know how many digits should be found, just use \#break:\d{1,5}\s\minute, which will catch digits from 1 to 5.

Javascript regex positive less than 10000 than can be decimal

I need a regex for a number than can be decimal and less than 10000 with max 2 digits after decimal.
I tried
/^([0-9]{1,4})+(\.[0-9]{0,2})$/
but it returns true for 44555.54 for example.
In your regex you are using + which is using for one or more repetition and which leads to match any length of digit and make decimal part non-greedy(using?) to make it optional.
^[0-9]{1,4}(\.[0-9]{0,2})?$
or using \d for digit character class.
^\d{1,4}(\.\d{0,2})?$

Regex for non negative and non zero for the format ###.##

I have a requirement to validate some inputs which should be in format ###.##
Invalid inputs are:
-11.10 ==> no negative
000.00 or 0 ==> 0 not allowed should be positive
Valid inputs are:
1
11
111
1.1
11.11
111.11
I have tried with the following regex ^([^-]\d{0,2}(.\d{1,2})?)$ which fulfills my requirements except it's accepting 0 which I don't want. How I can modify my regex so only 0's do not get matched?
Thanks For Help
Try
^(?=.*[1-9])\d{1,3}(?:\.\d\d?)?$
It should do it for you.
It starts with a positive look-ahead to make sure there's a digit other than 0 present.
Then it matches 1-3 digits, optionally followed by a . and 1-2 digits.
Your regex101 updated.
([0-9]){1,3}(\.[0-9]{1,2})? is the expression you are searching for.
([0-9]){1,3} = any number sequence with a length from 1 up to 3
(\.[0-9]{1,2})? = "?" maybe there is a float tail
(\.[0-9]{1,2}) = float tail must start with a dot and decimal numbers have to be up to 2
There is a way to except all zero sequences but it will waste your time for no reason, as you can simply check it with if myNum > 0.
It will work for negative values also, but this regex excludes them too.
^[1-9][0-9]*(\.[0-9]+)?$|^0\.[0-9]+$
This will work for you. It accepts all valid positive decimal numbers excluding 0.

Regex for number with decimals and thousand separator

I need regex to validate a number that could contain thousand separators or decimals using javascript.
Max value being 9,999,999.99
Min value 0.01
Other valid values:
11,111
11.1
1,111.11
INVALID values:
1111
1111,11
,111
111,
I've searched all over with no joy.
/^\d{1,3}(,\d{3})*(\.\d+)?$/
About the minimum and maximum values... Well, I wouldn't do it with a regex, but you can add lookaheads at the beginning:
/^(?!0+\.00)(?=.{1,9}(\.|$))\d{1,3}(,\d{3})*(\.\d+)?$/
Note: this allows 0,999.00, so you may want to change it to:
/^(?!0+\.00)(?=.{1,9}(\.|$))(?!0(?!\.))\d{1,3}(,\d{3})*(\.\d+)?$/
which would not allow a leading 0.
Edit:
Tests: http://jsfiddle.net/pKsYq/2/
((\d){1,3})+([,][\d]{3})*([.](\d)*)?
It worked on a few, but I'm still learning regex as well.
The logic should be 1-3 digits 0-1 times, 1 comma followed by 3 digits any number of times, and a single . followed by any number of digits 0-1 times
First, I want to point out that if you own the form the data is coming from, the best way to restrict the input is to use the proper form elements (aka, number field)
<input type="number" name="size" min="0.01" max="9,999,999.99" step="0.01">
Whether "," can be entered will be based on the browser, but the browser will always give you the value as an actual number. (Remember that all form data must be validated/sanitized server side as well. Never trust the client)
Second, I'd like to expand on the other answers to a more robust (platform independent)/modifiable regex.
You should surround the regex with ^ and $ to make sure you are matching against the whole number, not just a subset of it. ex ^<my_regex>$
The right side of the decimal is optional, so we can put it in an optional group (<regex>)?
Matching a literal period and than any chain of numbers is simply \.\d+
If you want to insist the last number after the decimal isn't a 0, you can use [1-9] for "a non-zero number" so \.\d+[1-9]
For the left side of the decimal, the leading number will be non-zero, or the number is zero. So ([1-9]<rest-of-number-regex>|0)
The first group of numbers will be 1-3 digits so [1-9]\d{0,2}
After that, we have to add digits in 3s so (,\d{3})*
Remember ? means optional, so to make the , optional is just (,?\d{3})*
Putting it all together
^([1-9]\d{0,2}(,?\d{3})*|0)(\.\d+[1-9])?$
Tezra's formula fails for '1.' or '1.0'. For my purposes, I allow leading and trailing zeros, as well as a leading + or - sign, like so:
^[-+]?((\d{1,3}(,\d{3})*)|(\d*))(\.|\.\d*)?$
In a recent project we needed to alter this version in order to meet international requirements.
This is what we used: ^-?(\d{1,3}(?<tt>\.|\,| ))((\d{3}\k<tt>)*(\d{3}(?!\k<tt>)[\.|\,]))?\d*$
Creating a named group (?<tt>\.|\,| ) allowed us to use the negative look ahead (?!\k<tt>)[\.|\,]) later to ensure the thousands separator and the decimal point are in fact different.
I have used below regrex for following retrictions -
^(?!0|\.00)[0-9]+(,\d{3})*(.[0-9]{0,2})$
Not allow 0 and .00.
','(thousand seperator) after 3 digits.
'.' (decimal upto 2 decimal places).

Categories