我正在使用Javascript正则表达式,但这与我对其工作原理的理解相矛盾。
表达式为:/^[0-9]+$/
所以,如果我测试这个正则表达式,比如一个文本框的值,我理解的是它将检查该值是否以至少一个数字开头,并以至少一个数字结束。然而,正在发生的事情是,只有当整个值是数字时,测试才会成功。如果我在其间放置一个字母表,我理解应该使测试成功,后者失败。
有人可以澄清我吗?感谢。
答案 0 :(得分:3)
是的,它表示从开始到结束的一系列1位或更多位数。
^[0-9].+[0-9]$
会让你了解它的作用。
答案 1 :(得分:1)
你的表达/^[0-9]+$/
说......
^
说“从字符串的开头开始”[0-9]
说“匹配的字符串必须包含数字”+
说,“这个数字可能会重复多次,但必须至少出现一次”$
说,“字符串必须结束”由于您没有在中间指定可能存在字符或任何内容,因此您的正则表达式将不匹配。如果你想“以数字开头,以数字结尾”,试试......
/^[0-9](.*[0-9])?$/
说
^
从字符串的开头(
开始一个小组 - 但现在忽略这个......后来会变得很明显[0-9]
后跟一个数字.
后跟任何字符*
并让“之前”指定的“任何字符”重复零次或多次[0-9]
后跟一个数字)?
但允许“任何字符后跟数字”存在或不存在。这允许我们只有一个数字作为匹配字符串。如果您想限制数字和字母
,也可以使用/^[0-9]([0-9a-zA-Z]*[0-9])?$/