12

Вопрос по regex, javascript – Регулярное выражение в JavaScript для проверки десятичных чисел

Я хочу регулярное выражение в JavaScript для проверки десятичных чисел.

Должно быть разрешено только до двух десятичных знаков. Например, это должно позволить10.89 но нет10.899.

Следует также разрешить только один период (.). Например, это должно позволить10.89 но нет10.8.9.

  • заменить из /^(-?\d*)((\.(\dndom0,2casts)?)?)$/i на / ^ (-? \ d {0,6}) ((\. ( \ d *)?)?) $ / я

    от
  • Можем ли мы ограничить до десятичного знака только 6 цифрами?

    от
  • @mercy: Не могли бы вы дать мне какие-нибудь подробности? Что вы подразумеваете под "не работает"? Какую проблему вы испытываете с предложенным мною решением?

    от
  • Как использовать ^ \ d + (\. \ D {0,2})? $ В javascript? Это дает ошибку

    от Shardaprasad Soni
  • @micha, извините, исправил опечатку в моем первом регулярном выражении

    от
  • Если я наберу 0000.100, который будет недопустимым десятичным, каким должен быть regExp?

    от
  • это не похоже на работу для меня

    от
  • Можете ли вы опубликовать код в виде текста, а не изображения?

    от
  • конечно, теперь это отредактировано .. теперь вы счастливы .... :)

    от
  • @ShardaprasadSoni см. Мой пост для примера

    от
  • Привет, я хочу, чтобы 10. также.

    от Shardaprasad Soni
  • . выступает за любого персонажа |[0-9] такой же как\d

    от
  • Это сработало для меня в JS. Спасибо

    от
  • хотя несколько случаев не работали как .45

    от
  • дубликат: stackoverflow.com/q/468655/55209

    от safarov
  • stackoverflow.com/q/468655/55209

    от Artem Koshelev
10 ответов
  • 1

    Попробуйте регулярное выражение, подобное этому:

    (?=[^\0])(?=^([0-9]+){0,1}(\.[0-9]{1,2}){0,1}$)
    

    Allowed: 1, 10.8, 10.89, .89, 0.89, 1000

    Not Allowed: 20. , 50.89.9, 12.999, ., Null character Note this works for positive numbers

  • -2

    Это работает? [0-9]{2}.[0-9]{2}

    Это работает?

    [0-9]{2}.[0-9]{2}
    

  • 29

    Попробуйте следующее выражение:

    ^\d+\.\d{0,2}$ Если вы хотите, чтобы десятичные разряды были необязательными, вы можете использовать следующее:^\d+(\.\d{1,2})?$

    EDIT: Чтобы проверить соответствие строки в Javascript, используйте следующий фрагмент:

    var regexp = /^\d+\.\d{0,2}$/;
    
    // returns true
    regexp.test('10.5')
    

  • 0

    Это функция

     function CheckValidAmount() {
            var amounttext = document.getElementById('txtRemittanceNumber').value;
            var amount = parseFloat(amounttext);
            if (!(/^[-+]?\d*\.?\d*$/.test(amounttext))){
                alert('Please enter only numbers into amount textbox.')
                document.getElementById('txtRemittanceNumber').value = "10.00";
            }
        }
    

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

    Спасибо ... :)

  • 24

    позволит:

    ^\d+(\.\d{1,2})?$
    

    244 10.89 9.5

    запретит:

    10.895 10. 10.8.9

  • 8

    var regexp = /^\d+(\.\d{1,2})?$/;

    Regex

    /^\d+(\.\d{1,2})?$/
    
    Demo

    
    console.log("'10.5' returns " + regexp.test('10.5'));
    console.log("'115.25' returns " + regexp.test('115.25'));
    console.log("'1535.803' returns " + regexp.test('1535.803'));
    console.log("'7' returns " + regexp.test('7'));
    console.log("'.74' returns " + regexp.test('.74'));
    console.log("'153.14.5' returns " + regexp.test('153.14.5'));
    console.log("'415351108140' returns " + regexp.test('415351108140'));
    console.log("'415351108140.5' returns " + regexp.test('415351108140.5'));
    console.log("'415351108140.55' returns " + regexp.test('415351108140.55'));
    console.log("'415351108140.556' returns " + regexp.test('415351108140.556'));

    Explanation / / : the beginning and end of the expression ^ : whatever follows should be at the beginning of the string you're testing \d+ : there should be at least one digit ( )? : this part is optional \. : here goes a dot \d{1,2} : there should be between one and two digits here $ : whatever precedes this should be at the end of the string you're testing Tip

    Ты можешь использоватьregexr.com или жеregex101.com для проверки регулярных выражений прямо в браузере!

  • 3

    Числа не более 2 десятичных знаков: /^\d+(?:\.\d{1,2})?$/

    Числа не более 2 десятичных знаков:

    /^\d+(?:\.\d{1,2})?$/
    

    Это должно работать нормально. Пожалуйста, попробуйте :)

  • 1

    Я обнаружил, что могу использовать ^\d+(\.\d+)?$

    Я обнаружил, что могу использовать

    ^\d+(\.\d+)?$
    

    для более чем двух знаков после запятой.

  • 0

    по сравнению с ответом gven by mic ...

    он не проверяет ничего на некоторых платформах, над которыми я работаю ... если быть точным, то в действительности не работает в Dream Viewer ..

    Настоящий .. я переписываю это снова .. которое будет работать на любой платформе .. "^[0-9]+(.[0-9]{1,2})?$".. thnkss ..

  • 2

    Пожалуйста

    смотрите мой проект кросс-браузерного фильтра значения элемента ввода текста на вашей веб-странице с использованием языка JavaScript:Фильтр клавиш ввода , Вы можете отфильтровать значение в виде целого числа, числа с плавающей запятой или написать собственный фильтр, например фильтр телефонных номеров. Посмотрите пример пользовательского фильтра ввода числа с плавающей запятой с десятичным указателем и ограничением до 2 цифр после десятичного указателя:

    <!doctype html>
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head>
        <title>Input Key Filter Test</title>
    	<meta name="author" content="Andrej Hristoliubov [email protected]">
    	<meta http-equiv="Content-Type" content="text/h,tml; charset=utf-8"/>
    	
    	<!-- For compatibility of IE browser with audio element in the beep() function.
    	https://www.modern.ie/en-us/performance/how-to-use-x-ua-compatible -->
    	<meta http-equiv="X-UA-Compatible" content="IE=9"/>
    	
    	<link rel="stylesheet" href="https://rawgit.com/anhr/InputKeyFilter/master/InputKeyFilter.css" type="text/css">		
    	<script type="text/javascript" src="https://rawgit.com/anhr/InputKeyFilter/master/Common.js"></script>
    	<script type="text/javascript" src="https://rawgit.com/anhr/InputKeyFilter/master/InputKeyFilter.js"></script>
    	
    </head>
    <body>
    	<h1>Float field</h1>
    <input id="Float" 
    	onchange="javascript: onChangeFloat(this)"
    	onblur="inputKeyFilter.isNaN(parseFloat(this.value), this);"
    />
    <script>
    	function CreateFloatFilterCustom(elementID, onChange, onblur){
    		try{
    			inputKeyFilter.Create(elementID
    				, onChange
    				, function(elementInput, value){//customFilter
    					if(value.match(/^(-?\d*)((\.(\d{0,2})?)?)$/i) == null){
    						inputKeyFilter.TextAdd(isRussian() ?
    								"Допустимый формат: -[0...9].[0...9] или -[0...9]e-[0...9]. Например: -12.34 1234"
    								: "Acceptable formats: -[0...9].[0...9] or -[0...9]e-[0...9]. Examples: -12.34 1234"
    							, elementInput);
    						return false;
    					}
    					return true;
    				}
    				, onblur
    			)
    		} catch(e) {
    			consoleError("Create float filter failed. " + e);
    		}
    	}
    	
    	CreateFloatFilterCustom("Float");
    	
    	function onChangeFloat(input){
    		inputKeyFilter.RemoveMyTooltip();
    		var elementNewFloat = document.getElementById("NewFloat");
    		var float = parseFloat(input.value);
    		if(inputKeyFilter.isNaN(float, input)){
    			elementNewFloat.innerHTML = "";
    			return;
    		}
    		elementNewFloat.innerHTML = float;
    	}
    </script>
     New float: <span id="NewFloat"></span>
    </body>
    </html>

    Также смотрите мою страницупример фильтра клавиш ввода