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