Check if the string is only numbers and or has one decimal after at least one digit and after the period allow up to 3 numbers

count number of digits after decimal point in c#
python regex
count number of digits after decimal point in java
c# check if number has decimal
regex examples
tcl string match multiple patterns
pattern matching in tcl

I am trying to create a reg ex pattern to match a string that has at least one number and at the most two numbers before the optional decimal point and if a decimal point is included their should be at least one to three digits at most after it.

For example the following values should validate.


The following valuse should not validate.


Here is my code so far

function check($string){
    if(preg_match('/^[0-9][0-9]?(?:\.[0-9]{1,3})$/', $string)){
        return true;
    } else {
        return false;

You can use this regex


synonym with group sign \d


In mechanical invention, the new model may cause the old to be cast upon the But even when we know the general history of thought and the special histories of our period of his whole antecedent career to the single science of anthropology. has defined civilization as " the sum of human contrivances which enable  The * is to allow multiple digits/decimal points. In case at least one digit/decimal point is required, replace * with + for one or more occurrences. EDIT: In case the regex needs to match (positive) decimal numbers (not just arbitrary sequences of digits and decimal points), a better pattern would be:

You can use a simpler regex.


$tests = [  '0',

$regex_pattern = '/^\d{1,2}(\.\d{1,3})?$/';

foreach($tests as $each_test){
    echo $each_test," -----------> ",var_dump(1 === preg_match($regex_pattern,$each_test)),"<br/>";


0 -----------> bool(true) 
0.0 -----------> bool(true) 
0.00 -----------> bool(true) 
0.000 -----------> bool(true) 
00 -----------> bool(true) 
00.0 -----------> bool(true) 
00.00 -----------> bool(true) 
00.000 -----------> bool(true) 
0. -----------> bool(false) 
00. -----------> bool(false) 
0.0000 -----------> bool(false) 
00.0000 -----------> bool(false) 

Matching Floating Point Numbers with a Regular Expression . In just one line of code, whether that code is written in Perl, If the string is “Jack is a boy”, it will match the „a” after the digit. When applied to “1 + 2 = 3”, the former regex will match „ 2” (space two), JavaScript lacks /s and Ruby lacks /m, but at least they. MATLAB uses IEEE 754 Binary Double Precision to represent floating point numbers. All floating point scheme that use binary mantissas cannot exactly represent 1/10, just like finite decimal representation schemes cannot exactly represent 1/3 or 1/7 . IEEE 754 also defined a Decimal Double Precision representation scheme, which can represent 2

'/^\d{1,2}(\.\d{1,2})?$/' is the exact pattern you are searching for.

But many atimes its good to write a function that keeps things nice neat and simple in case you want to expand on the idea

function OptionalDecimal($numstr) {
//use string count to check for the times decimal points appears in the string
if (substr_count($numstr,".") == 0) {
    if(preg_match('/^\d{1,2}$/', $numstr)) return 'true';
if (substr_count($numstr,".") == 1) {
    if(preg_match('/^\d{1,2}\.\d{1,2}$/', $numstr)) return 'true';
return 'false';

echo OptionalDecimal("4.7");

This function does the same thing

Invalid numbers (that is, strings we do not want to recognise as numbers but A number can have zero or more digits in front of a single period (.) Or we could decide that we want to capture the digits before and after the period for special digits in front of the period, but then there must be at least one digit behind it: \.[0-​9]+. 2. I don't think that the requirement "at least 1 letter, 1 number and 1 special character", implies that the special character must come after the number, which must come after the letter -- which the regex requires. 3. I don't think that the plus sign within the character class does what you think it does. Henry

Since you are sure your text box contains just numbers then you might int decimals = a[1]. Use regulation expression to validate the entry in the textbox: Decimal.TryParse Method (String, Decimal) to check a number is IsNullOrEmpty(strSplits[1])) { // write your exception code } else if (strSplits[1]. numbers, different results will be returned for different numbers (e.g. the below INT formula will return 0.55 if you pass in -23.45 as the argument --the Excel help file provides good coverage of the difference between INT and TRUNC) and (2) the use of a multiplier to remove the decimal point from the

The solution is to use Python's raw string notation for regular expression patterns; When one pattern completely matches, that branch is accepted. and can be matched later in the string with the \number special sequence, described below. fixed length, meaning that abc or a|b are allowed, but a* and a{3,4} are not. I did modify it just slightly; because your regex would allow special characters and space characters. I wanted to validate a username with the rules 1. must be at least six characters; 2. must contain only letters or numbers; 3. must contain at least one letter. To solve my problem, I adapted your regex slightly into:

Some people, when confronted with a problem, think 'I know, I'll use regular expressions. Regular expressions are a way to describe patterns in string data. What if we want to match a whole number—a sequence of one or more digits? Something with a star after it never prevents a pattern from matching—it'll just  3. In the coming Format Cells dialog box, go to the Number tab, click to highlight the Number in the Category box, and then type a number in the Decimal Places box. For example, if you want to limit only 1 decimal place for selected cells, just type 1 into the Decimal places box. See below screen shot: 4. Click the OK in the Format Cells dialog