2011-12-01 82 views

回答

3

当然,只是在开始添加lookahead assertion

/^(?=.{0,13}$)\d+(\.\d+)?$/ 

^(?=.{0,13}$)确保有开始和13之间介于0和字符字符串的结尾。它实际上并不匹配并使用任何这些字符,因此正则表达式的以下部分可以进行验证。

另一种方式是

/^(?!.{14})\d+(\.\d+)?$/ 

这里,(?!.{14})称,这是不可能在字符串的开始匹配14个字符,从而确保对这一主题的长度最多为13

其他变化:

/^(?=.{13})\d+(\.\d+)?$/   # more than 12 characters 
/^(?=.{6}$|.{8}$)\d+(\.\d+)?$/ # 6 or 8 characters 
+1

+1快36秒:D – FailedDev

1

前瞻:

/^(?=.{0,13}$)\d+(\.\d+)?$/ 
1

要定义你可以使用正向前查找

/^(?=.{0,13}$)\d+(\.\d+)?$/ 

(?=.{0,13}$)是前瞻断言的最大长度,意思是有0之间,领先,直到字符串的结尾13个字符?

您可以为部分之前像这样

^(?=[^.]{1,5}(?:\.|$))\d+(?:\.(?=.{1,4}$)\d+)?$ 

点后见它here online on Regexr

第一次看前方检查不是一个点([^.])1至5倍也做到这一点单独,直到它找到一个点或字符串的结尾。第二次查看将检查点后面的1到4个字符,直到字符串结束。