var rxDatePattern = new RegExp("^(?:\\d*\\.\\d{" + no + "})$");
这是常规的exp模式,用于接受十进制后的3位数字值。值存储在变量no .... 这工作正常,但我有点不理解模式,任何人都可以帮我模式.. 感谢
答案 0 :(得分:3)
^
和$
分别是字符串开头和结尾的锚点。在这种情况下,它们使正则表达式匹配一个完整的字符串,而不仅仅是一个子字符串。
\d
代表单个数字,而\d*
由于*
量词,是一系列至少为零的数字。然后跟随一个文字点,再次匹配,一个点(.
)和一个可变数字的数字,例如\d{3}
。
正则表达式包含\\d
而不是\d
的原因是\
也是JavaScript中字符串的转义字符。因此,要在字符串中包含的正则表达式中包含字面反斜杠,您必须将反斜杠转义一次,因此正则表达式引擎会看到实际的反斜杠。
最后所有这些都包含在非捕获组(?:...)
中,尽管我不太明白为什么。它在这种情况下没有效果,也可以省略。
因此对于no
= 2,这将匹配像
1.23
123.45
.00
但不是像
这样的字符串.123
1.123
5.3
2
1.
答案 1 :(得分:0)
第一个\ d *是说“很多数字或0之前”。“” 然后\ d {3}(3是var no的值)就是说“3之后的数字”。“”)
起始“^”和结尾“$”是说“正是这种模式”