我想要的是,有一个最大长度为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
但它没有输出任何东西..
这是小提琴
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的实数.