簡體   English   中英

javascript中只能訪問小數和數字的正則表達式

[英]Regular expression in javascript that access decimals and numbers only

我想制作支持以下所有數字的正則表達式,

  • 號碼的最大長度:7
  • 小數位最大長度:2

例子:

  • 有效: 500, 1234567, 350.75, 7500.05, 4500.3
  • 無效:100.123、12345678、45000.25

我試過

<input type='number' pattern="/^\\d{1,7}(\\.\\d{1,2})?$/"/>

但它不滿足最大長度值。

請幫助解決這個問題。

通過前瞻檢查長度。

               ↓               ↓       CHANGE THESE PARAMETERS
/^(?=(.[.]?){1,7}$)\d*([.]\d{1,2})?$/
  |---------------|                    LOOK-AHEAD TO CHECK LENGTH
                   |-|                 INTEGER PORTION OF NUMBER
                      |-----------|    OPTIONAL DECIMAL PORTION OF NUMBER

與其他解決方案相比,這更容易擴展到問題的變體,例如“最多七位總位數,最多四位小數”。 只需替換“更改這些參數”所指向的兩個字符即可。

很確定這會為你做到:

^(\d{1,5}\.\d{2}|\d{1,6}\.\d|\d{1,7})$

任何 5.2 或 6.1 或 7 位數字(最大字符數)

這是模式的jsbin

var re = /^(\d{1,7}|\d{1,6}\.\d|\d{1,5}\.\d{1,2})$/;

function validate(str) {
  return (str).match(re) !== null;
}

function assert(value, expected) {
  return value === expected;
}

console.log(
  assert(validate("1234567"), true)
);

console.log(
  assert(validate("123456.7"), true)
);

console.log(
  assert(validate("12345.67"), true)
);

console.log(
  assert(validate("1234.567"), false)
);

console.log(
  assert(validate("12345.678"), false)
);

console.log(
  assert(validate("123456.78"), false)
);

console.log(
  assert(validate("1234567.8"), false)
);

console.log(
  assert(validate("12345678"), false)
);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM