javascript – 这个正则表达式有什么问题(如果没有正则表达式)

前端之家收集整理的这篇文章主要介绍了javascript – 这个正则表达式有什么问题(如果没有正则表达式)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我想要的是,有一个最大长度为5的文本框.允许的值是..

>任何整数//例如1,3,9,9239都是有效的
>实数,小数点后的一点,例如. 1.2,93.7有效且61.37,55.67无效
>也允许在此之后只输入十进制和一位数,即.7是有效输入(将被视为0.7)

我找到了这个页面,http://www.regular-expressions.info/refadv.html
所以我的想法就是这样

>有一个数字
>如果之后有一个数字和一个小数,那么之后必须有一个数字
>如果没有数字,则必须有小数和数字

所以,我制作的正则表达式是……

a single digit one or more => /d+  
an optional decimal point followed by exactly one digit => (?:[.]\d{1})?  
if first condition matches => (?(first condition) => (?((?<=\d+)  
then,match the option decimal and one exact digit =>(?((?<=\d+)(?:[.]\d{1})?  
else => |
find if there is a decimal and one exact digit => (?:[.]\d{1}){1}  
check the whole condition globally => /gm

整体表达=>

(?(?<=\d+)(?:[.]\d{1}){1}|(?:[.]\d{1}){1})+/gm

但它没有输出任何东西..
这是小提琴

http://jsfiddle.net/Fs6aq/4/

ps:那里的pattern1和pattern2与我的previous question有关.

最佳答案
您可以尝试以下模式:

/^\d{0,4}\.?\d$/

它似乎满足您的所有要求:

> /^\d{0,4}\.?\d$/.test(".4")
  true
> /^\d{0,4}\.?\d$/.test(".45")
  false
> /^\d{0,4}\.?\d$/.test("1234.4")
  true
> /^\d{0,4}\.?\d$/.test("12345.4")
  false
> /^\d{0,4}\.?\d$/.test("12345")
  true
> /^\d{0,4}\.?\d$/.test("123456")
  false

此模式假定该数字最多可包含五位数和一个可选的小数点.

如果最大长度为5包含可选的小数点,则模式稍微复杂一些:

/^(?:\d{1,5}|\d{0,3}\.\d)$/

该组的第一部分处理所需长度的整数,该组的第二个选项处理最大长度(包括小数点)为5的实数.

猜你在找的JavaScript相关文章